rfid 125khz считыватель
- Войдите на сайт для отправки комментариев
Пт, 29/05/2015 - 09:02
byte RFIDcardNum[4];
003
byte evenBit = 0;
004
byte oddBit = 0;
005
byte isData0Low = 0;
006
byte isData1Low = 0;
007
int recvBitCount = 0;
008
byte isCardReadOver = 0;
009
010
void setup()
011
{
012
Serial.begin(9600);
013
attachInterrupt(0, ISRreceiveData0, FALLING ); //data0/rx is connected to pin 2, which results in INT 0
014
attachInterrupt(1, ISRreceiveData1, FALLING ); //data1/tx is connected to pin 3, which results in INT 1
015
pinMode(13, OUTPUT);
016
}
017
018
void loop()
019
{
020
021
//read card number bit
022
if(isData0Low||isData1Low){
023
if(1 == recvBitCount){//even bit
024
evenBit = (1-isData0Low)&isData1Low;
025
026
}
027
else if( recvBitCount >= 26){//odd bit
028
oddBit = (1-isData0Low)&isData1Low;
029
isCardReadOver = 1;
030
delay(10);
031
032
if (isCardReadOver == 9923104)
033
034
{
035
digitalWrite(13, HIGH); // зажигаем светодиод
036
delay(1000); // ждем секунду
037
digitalWrite(13, LOW); // выключаем светодиод
038
Serial.println(" hello ");
039
}
040
if (isCardReadOver == 9920544
041
)
042
digitalWrite(13, HIGH);
043
digitalWrite(13, HIGH); // зажигаем светодиод
044
delay(9000); // ждем секунду
045
digitalWrite(13, LOW); // выключаем светодиод
046
Serial.println(" hello1 ");
047
048
}
049
else{
050
//only if isData1Low = 1, card bit could be 1
051
RFIDcardNum[2-(recvBitCount-2)/8] |= (isData1Low << (7-(recvBitCount-2)%8));
052
053
054
}
055
//reset data0 and data1
056
isData0Low = 0;
057
isData1Low = 0;
058
059
}
060
061
//print the card id number
062
if(isCardReadOver){
063
//if(checkParity()){
064
//Serial.println();
065
//Serial.print(RFIDcardNum[2],HEX);//High byte
066
//Serial.print(RFIDcardNum[1],HEX);//Midle byte
067
//Serial.println(RFIDcardNum[0],HEX);//Low byte
068
Serial.println(*((long *)RFIDcardNum));
069
//}
070
resetData();
071
}
072
073
}
074
075
byte checkParity(){
076
int i = 0;
077
int evenCount = 0;
078
int oddCount = 0;
079
for(i = 0; i < 8; i++){
080
if(RFIDcardNum[2]&(0x80>>i)){
081
evenCount++;
082
}
083
}
084
for(i = 0; i < 4; i++){
085
if(RFIDcardNum[1]&(0x80>>i)){
086
evenCount++;
087
}
088
}
089
for(i = 4; i < 8; i++){
090
if(RFIDcardNum[1]&(0x80>>i)){
091
oddCount++;
092
}
093
}
094
for(i = 0; i < 8; i++){
095
if(RFIDcardNum[0]&(0x80>>i)){
096
oddCount++;
097
}
098
}
099
100
if(evenCount%2 == evenBit && oddCount%2 != oddBit){
101
return 1;
102
}
103
else{
104
return 0;
105
}
106
}
107
void resetData(){
108
RFIDcardNum[0] = 0;
109
RFIDcardNum[1] = 0;
110
RFIDcardNum[2] = 0;
111
RFIDcardNum[3] = 0;
112
evenBit = 0;
113
oddBit = 0;
114
recvBitCount = 0;
115
isData0Low = 0;
116
isData1Low = 0;
117
isCardReadOver = 0;
118
}
119
// handle interrupt0
120
void ISRreceiveData0(){
121
recvBitCount++;
122
isData0Low = 1;
123
}
124
125
// handle interrupt1
126
void ISRreceiveData1(){
127
recvBitCount++;
128
isData1Low = 1;
129
}
надо поправить код работает не коректно
правь)) мы согласны
Видимо памятку себе сделал. Типа вот код, нужно поправить. Форум - записная книжка.. Каждому нужно завести себе по ветке.
1. Записки
2. Личка
3. Размышления
да я все сделал но не так работает как нужно
ага волшебную ))) может кто знает в чем недстаток и подскажет
да я все сделал но не так работает как нужно
Ну тут 2 варианта
1. Сделал не все
2. Сделал не так
))))))))))) я знаю что не так что то но что не знаю поэтому я тут
))))))))))) я знаю что не так что то но что не знаю поэтому я тут
А мы типа должны угадывать?
вообщем код работает на данный момент так при подношение карты к считывателю загораеться светодиод и в мониторе порта отображаеться ********* но так происходит с любой картой а надо что б при считывание одной карты загорался светодиод и писал допустим привет а при считывание другой не загорался и писал пошел вон типо того )) или просто нечего не происходило
Ну делай тогда.
если б я знал как это доделать наверно тут не писал правельно ?
если б я знал как это доделать наверно тут не писал правельно ?
Мммм учебник по програмированию требуется?
все вобще вопрос такой
if(isCardReadOver == 9923104)062033063064034065{066035067digitalWrite(13, HIGH);// зажигаем светодиод068036069delay(1000);// ждем секунду070037071digitalWrite(13, LOW);// выключаем светодиод072038073Serial.println(" hello ");074039правельно ли я задал чтоб при считывание карты с таким номером 9923104 загорался светодиод или как то по другому надо понять не могу
А если при считывании карты отправлять в сериал этот номер и смотреть его на компе, это будет сложно?
не много не понял вопроса< при считывание карты в мониторе порта отобржаеться номер карты и hello1
Откуда вы взяли номер карты?
при считывание он автоматически отображаеться в мониторе порта
у меня глаз дергается при попытке взгляда на код... это не читаемо. Может просто взять пример из библиотеки и поиграть с ним?
а приклюха в том что на данный rfid нет нефига все прорыскал яб срадостью
Grove - 125KHz RFID Reader, Считыватель RFID 125 КГц меток
Ну поздравляю, первым значит будешь. Как разберешься Не забудь поделиться с народом. :)
да это понятно мне не жалко а людам может и поможет
да это понятно мне не жалко а людам может и поможет