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)
062
033
063
064
034
065
{
066
035
067
digitalWrite(13, HIGH);
// зажигаем светодиод
068
036
069
delay(1000);
// ждем секунду
070
037
071
digitalWrite(13, LOW);
// выключаем светодиод
072
038
073
Serial
.println(
" hello "
);
074
039
правельно ли я задал чтоб при считывание карты с таким номером 9923104 загорался светодиод или как то по другому надо понять не могу
А если при считывании карты отправлять в сериал этот номер и смотреть его на компе, это будет сложно?
не много не понял вопроса< при считывание карты в мониторе порта отобржаеться номер карты и hello1
Откуда вы взяли номер карты?
при считывание он автоматически отображаеться в мониторе порта
у меня глаз дергается при попытке взгляда на код... это не читаемо. Может просто взять пример из библиотеки и поиграть с ним?
а приклюха в том что на данный rfid нет нефига все прорыскал яб срадостью
Grove - 125KHz RFID Reader, Считыватель RFID 125 КГц меток
Ну поздравляю, первым значит будешь. Как разберешься Не забудь поделиться с народом. :)
да это понятно мне не жалко а людам может и поможет
да это понятно мне не жалко а людам может и поможет