В чем ошибка ??

Fearles8383
Offline
Зарегистрирован: 14.05.2015
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;
}

вроде все правельно прописал но не работает должен при считывание карты включать лампочку 

Sloper
Sloper аватар
Offline
Зарегистрирован: 30.03.2015

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

Fearles8383 пишет:


вроде все праве(И)льно прописал но не работает должен при считывание карты включать лампочку 

нашел ошибку!!!!!!!  )

Fearles8383
Offline
Зарегистрирован: 14.05.2015

хахахаххахахахах шутник 

Fearles8383
Offline
Зарегистрирован: 14.05.2015

а решение ее нет ))

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

хоть бы написал какая ошибка?

в консоль то пишет (HELLO)

Fearles8383
Offline
Зарегистрирован: 14.05.2015

ну поидеи должен при при считывание карты с определенным номером зажигать светодиод и выводить в com пор hello а он выводит 0 в com порт и не зажигает светодиод

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Fearles8383 пишет:

...
      isCardReadOver = 1;
      delay(10);
      
      if (isCardReadOver == 9923104)
...

 

WAT?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

я думаю это номер карты или я ошибаюсь ?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

как мне прописать чтоб на определенный номер карты загорался светодиод

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Не знаю, что это, но, не говоря о том, что у Вас явно что-то напутано с фигурными скобками и условиями, в данном куске кода Вы: устанавливаете переменную isCardReadOver в 1, а потом тут же смотрите, не равна ли она 9923104. Нет, она однозначно не равна.

Fearles8383
Offline
Зарегистрирован: 14.05.2015

тоесть мне  isCardReadOver в 1 изменить на свой номер карты ?

Fearles8383
Offline
Зарегистрирован: 14.05.2015

что за строчка отвечает за номер карты ?

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Для начала Вам было бы не плохо разобраться, что каждая строчка кода делает и зачем она там, мои зачаточные способности в телепатии конечно позволяют мне предположить, что хотелось, но не совсем.

А если лень, то найдите библиотеку работы с Вашим RFID-считывателем и используйте ее - будет проще.

Fearles8383
Offline
Зарегистрирован: 14.05.2015

а предположительно за что отвечает isCardReadOver

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Скорее всего она говорит, прочиталась-ли вся карточка или еще нет, номер карточки по логике должен храниться в RFIDcardNum, но судя по коду это не совсем работает.

Fearles8383
Offline
Зарегистрирован: 14.05.2015

я кстати думал на счет RFIDcardNum

Fearles8383
Offline
Зарегистрирован: 14.05.2015
 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));

как примерно прописать хотябы примерно

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Чего?

Еще раз говорю, лучше поищите для своего RFID-считывателя библиотеку. Этот код явно не Ваш, потому ни Вы, судя по всему, полностью не понимаете, что тут происходит ни другие люди, так как он явно написан с ошибками. Ну или если нет библиотеки, поищите другой пример, который будет проще понять и переделать под себя.

Fearles8383
Offline
Зарегистрирован: 14.05.2015

в этом и косяк все прорыл нет нечего кроме него под данный сканер

Fearles8383
Offline
Зарегистрирован: 14.05.2015

СТОП все есть и библиотека и код вспомнил Я есть проблема при считывание выдает в мнитор ïÿÿïïïÿïïï что может быть

Fearles8383
Offline
Зарегистрирован: 14.05.2015

проблема с Serial.begin(9600)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Ну наконец-то, вот и у нас на форуме появился "клуб цыганок-гадалок". Ай позолоти ручку всю правду раскажу.
я думаю что проблема в ардуино.

Fearles8383
Offline
Зарегистрирован: 14.05.2015

не знаешь как исправить чтоб при считывание в монитор выдовал текст а не фиг знает что это из за Serial.begin(9600) не знаю чт делать

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

если сериал показывает какую-то фигню вместо нужных данных, то 99% что скорость Serial у ардуины и у компа разная. А нужно, что бы совпадала

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

SunX пишет:

если сериал показывает какую-то фигню вместо нужных данных, то 99% что скорость Serial у ардуины и у компа разная. А нужно, что бы совпадала


Гениально, дайте запишу в блокнот.