RFID. помогите дописать условие

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем virienko, 8 фев 2015.

  1. virienko

    virienko Нуб

    Уважаемые участники форума.
    Захотелось создать систему, выполняющую некое действия в случае успешной идентификации RFID карты.
    Имеется код :

    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial SoftSerial(2, 3);
    unsigned char buffer[64]; // buffer array for data recieve over serial port
    int count=0;    // counter for buffer array
    void setup()
    {
      SoftSerial.begin(9600);              // the SoftSerial baud rate
      Serial.begin(9600);            // the Serial port of Arduino baud rate.
    }
    void loop()
    {
      if (SoftSerial.available())              // if date is comming from softwareserial port ==> data is comming from SoftSerial shield
      {
        while(SoftSerial.available())          // reading data into char array
        {
          buffer[count++]=SoftSerial.read();    // writing data into array
          if(count == 64)break;
      }
        Serial.write(buffer,count);            // if no data transmission ends, write buffer to hardware serial port
        clearBufferArray();              // call clearBufferArray function to clear the storaged data from the array
        count = 0;                      // set counter of while loop to zero
      }
      if (Serial.available())            // if data is available on hardwareserial port ==> data is comming from PC or notebook
        SoftSerial.write(Serial.read());      // write it to the SoftSerial shield
    }
    void clearBufferArray()              // function to clear buffer array
    {
      for (int i=0; i<count;i++)
        { buffer[i]=NULL;}                  // clear all index of array with command NULL
    }
    Как его преобразовать для моих целей ?
    Например : если карта моя, то на pin 13 загорится светодиод
    Сам в программировании не силен, поэтому задача непосильная :(
    Заведомо спасибо всем, кто окажет помощь или даст какой-то совет
     
  2. TOP_GUN

    TOP_GUN Нуб

    Я так понимаю, у вас RFID сканер на 125 кГц, т.к. ваш код от него. Сам долго парился с ним, хотел сигнализацию сделать) Суть в том, что имеется два скользких момента при работе с этим сканером. 1) необходимо учитывать первый и последний контрольные байты, чтобы сравнение своего кода со считываемым было адекватным. 2) ввести задержку не менее 50 мс (сам подобрал экспериментально), иначе светодиод тупо не загорится. Программа включает светодиод на 13 пине на 1 сек после сканирования известной карты: (где #моей карты 74002AADDF2C, а единицы - это и есть контрольные байты.)

    #define LED_1 13
    unsigned char buffer[64];
    unsigned char buffer1[64] = {'1','7','4','0','0','2','A','A','D','D','F','2','C','1'};
    int count = 0;
    int s = 0;
    void setup()
    {
    Serial.begin(9600);
    pinMode(LED_1,OUTPUT);
    digitalWrite(LED_1,LOW);
    }
    void loop()
    {
    s=0;
    if (Serial.available())
    {
    while(Serial.available())
    {
    buffer[count]=Serial.read();
    if (buffer1[count] == buffer[count])
    {s = s+1;}
    count++;
    if(count == 64)break;
    }
    clearBufferArray();
    count = 0;
    }
    if (s == 12)
    {
    digitalWrite(LED_1,HIGH);
    delay(1000);
    digitalWrite(LED_1,LOW);
    }
    delay(50);

    }
    void clearBufferArray()
    {
    for (int i=0; i<count;i++)
    { buffer=NULL;}
    }

    Удачи!
     
  3. TOP_GUN

    TOP_GUN Нуб

    Ну и естественно вы должны воткнуть RX сканера в TX платы, а RX платы в TX сканера, ведь софтсериал уже не нужен. Также загружайте скетч на плату только при отключенном сканере, иначе сериал соединение не поймет куда вы отправляете инфу : на плату или на сканер.
     
  4. nerealnostkvest

    nerealnostkvest Нерд

    Вот сейчас точно такую задачу решаю, в точности вставил ваш код, вылезла следующая ошибка:
    rfid.ino: In function 'void clearBufferArray()':
    rfid.ino:9:9: error: incompatible types in assignment of 'int' to 'unsigned char [64]'

    С чем может быть связано?
     
  5. nerealnostkvest

    nerealnostkvest Нерд

    Починил :)
     
    TOP_GUN нравится это.
  6. TOP_GUN

    TOP_GUN Нуб

    Хорошо) А в чем загвоздочка была?
     
  7. nerealnostkvest

    nerealnostkvest Нерд

    Вот тут в конце:
    void clearBufferArray()
    {
    for (int i=0; i<count;i++)
    { buffer=NULL;}
    }


    Надо было buffer
    Так все нормально)