В чем ошибка ??
- Войдите на сайт для отправки комментариев
Ср, 03/06/2015 - 15:23
byte RFIDcardNum[4]; byte evenBit = 0; byte oddBit = 0; byte isData0Low = 0; byte isData1Low = 0; int recvBitCount = 0; byte isCardReadOver = 0; void setup() { Serial.begin(9600); attachInterrupt(0, ISRreceiveData0, FALLING ); //data0/rx is connected to pin 2, which results in INT 0 attachInterrupt(1, ISRreceiveData1, FALLING ); //data1/tx is connected to pin 3, which results in INT 1 pinMode(13, OUTPUT); } void loop() { //читает данные if(isData0Low||isData1Low){ if(1 == recvBitCount){//even bit evenBit = (1-isData0Low)&isData1Low; } else if( recvBitCount >= 26){//odd bit oddBit = (1-isData0Low)&isData1Low; isCardReadOver = 1; delay(10); if (isCardReadOver == 9923104) { digitalWrite(13, LOW); // выключаем светодиод Serial.println(" hello "); } if (isCardReadOver == 6856671) { digitalWrite(13, HIGH); Serial.println(" hello1 "); } else{ //only if isData1Low = 1, card bit could be 1 RFIDcardNum[2-(recvBitCount-2)/8] |= (isData1Low << (7-(recvBitCount-2)%8)); } //reset data0 and data1 isData0Low = 0; isData1Low = 0; } //print the card id number if(isCardReadOver){ //if(checkParity()){ //Serial.println(); //Serial.print(RFIDcardNum[2],HEX);//High byte //Serial.print(RFIDcardNum[1],HEX);//Midle byte //Serial.println(RFIDcardNum[0],HEX);//Low byte Serial.println(*((long *)RFIDcardNum)); //} resetData(); } } } byte checkParity(){ int i = 0; int evenCount = 0; int oddCount = 0; for(i = 0; i < 8; i++){ if(RFIDcardNum[2]&(0x80>>i)){ evenCount++; } } for(i = 0; i < 4; i++){ if(RFIDcardNum[1]&(0x80>>i)){ evenCount++; } } for(i = 4; i < 8; i++){ if(RFIDcardNum[1]&(0x80>>i)){ oddCount++; } } for(i = 0; i < 8; i++){ if(RFIDcardNum[0]&(0x80>>i)){ oddCount++; } } if(evenCount%2 == evenBit && oddCount%2 != oddBit){ return 1; } else{ return 0; } } void resetData(){ RFIDcardNum[0] = 0; RFIDcardNum[1] = 0; RFIDcardNum[2] = 0; RFIDcardNum[3] = 0; evenBit = 0; oddBit = 0; recvBitCount = 0; isData0Low = 0; isData1Low = 0; isCardReadOver = 0; } // handle interrupt0 void ISRreceiveData0(){ recvBitCount++; isData0Low = 1; } // handle interrupt1 void ISRreceiveData1(){ recvBitCount++; isData1Low = 1; }
вроде все правельно прописал но не работает должен при считывание карты включать лампочку
вроде все праве(И)льно прописал но не работает должен при считывание карты включать лампочку
нашел ошибку!!!!!!! )
хахахаххахахахах шутник
а решение ее нет ))
хоть бы написал какая ошибка?
в консоль то пишет (HELLO)
ну поидеи должен при при считывание карты с определенным номером зажигать светодиод и выводить в com пор hello а он выводит 0 в com порт и не зажигает светодиод
WAT?
я думаю это номер карты или я ошибаюсь ?
как мне прописать чтоб на определенный номер карты загорался светодиод
Не знаю, что это, но, не говоря о том, что у Вас явно что-то напутано с фигурными скобками и условиями, в данном куске кода Вы: устанавливаете переменную isCardReadOver в 1, а потом тут же смотрите, не равна ли она 9923104. Нет, она однозначно не равна.
тоесть мне isCardReadOver в 1 изменить на свой номер карты ?
что за строчка отвечает за номер карты ?
Для начала Вам было бы не плохо разобраться, что каждая строчка кода делает и зачем она там, мои зачаточные способности в телепатии конечно позволяют мне предположить, что хотелось, но не совсем.
А если лень, то найдите библиотеку работы с Вашим RFID-считывателем и используйте ее - будет проще.
а предположительно за что отвечает isCardReadOver
Скорее всего она говорит, прочиталась-ли вся карточка или еще нет, номер карточки по логике должен храниться в RFIDcardNum, но судя по коду это не совсем работает.
я кстати думал на счет RFIDcardNum
if
(isCardReadOver){
057
//if(checkParity()){
058
//Serial.println();
059
//Serial.print(RFIDcardNum[2],HEX);//High byte
060
//Serial.print(RFIDcardNum[1],HEX);//Midle byte
061
//Serial.println(RFIDcardNum[0],HEX);//Low byte
062
Serial
.println(*((
long
*)RFIDcardNum));
как примерно прописать хотябы примерно
Чего?
Еще раз говорю, лучше поищите для своего RFID-считывателя библиотеку. Этот код явно не Ваш, потому ни Вы, судя по всему, полностью не понимаете, что тут происходит ни другие люди, так как он явно написан с ошибками. Ну или если нет библиотеки, поищите другой пример, который будет проще понять и переделать под себя.
в этом и косяк все прорыл нет нечего кроме него под данный сканер
СТОП все есть и библиотека и код вспомнил Я есть проблема при считывание выдает в мнитор ïÿÿïïïÿïïï что может быть
проблема с Serial.begin(9600)
Ну наконец-то, вот и у нас на форуме появился "клуб цыганок-гадалок". Ай позолоти ручку всю правду раскажу.
я думаю что проблема в ардуино.
не знаешь как исправить чтоб при считывание в монитор выдовал текст а не фиг знает что это из за Serial.begin(9600) не знаю чт делать
если сериал показывает какую-то фигню вместо нужных данных, то 99% что скорость Serial у ардуины и у компа разная. А нужно, что бы совпадала
если сериал показывает какую-то фигню вместо нужных данных, то 99% что скорость Serial у ардуины и у компа разная. А нужно, что бы совпадала
Гениально, дайте запишу в блокнот.