Pages: [1]   Go Down
Author Topic: ID-20 lector RFID para Arduino YUN  (Read 311 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola amigos, tengo un problema con el código que estoy trabajando, se trata de un simple lector de tarjetas rfid de 125khz, específicamente el lector ID-20, cuando trato de que lea el código de mi token, no me arroja nada en la pantalla Serial. SI alguien me pudiera ayudar se los agradecería bastante.

Este es el código:

Code:
#include <SoftwareSerial.h>
#include <Bridge.h>

SoftwareSerial rfid(2,3); // RX,TX (el TX no se usa)

void setup() {
  Serial.begin(9600);
  rfid.begin(9600);
  Bridge.begin();
  while (!Serial);
 
  Serial.print("Procesos iniciados.");

}

void loop()
{
 
    while(rfid.available()) {
     
      byte i = 0;
      byte val = 0;
      byte code[6];
      byte checksum = 0;
      byte bytesread = 0;
      byte tempbyte = 0;
     
      Serial.print("Listo para leer");
     
      if((val = rfid.read()) == 2) {                  // check for header
        bytesread = 0;
        while (bytesread < 12) {                        // read 10 digit code + 2 digit checksum
          if( rfid.available() > 0) {
            val = rfid.read();
            if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02)) { // if header or stop bytes before the 10 digit reading
              break;                                    // stop reading
            }
 
            // Do Ascii/Hex conversion:
            if ((val >= '0') && (val <= '9')) {
              val = val - '0';
            } else if ((val >= 'A') && (val <= 'F')) {
              val = 10 + val - 'A';
            }
 
            // Every two hex-digits, add byte to code:
            if (bytesread & 1 == 1) {
              // make some space for this hex-digit by
              // shifting the previous hex-digit with 4 bits to the left:
              code[bytesread >> 1] = (val | (tempbyte << 4));
 
              if (bytesread >> 1 != 5) {                // If we're at the checksum byte,
                checksum ^= code[bytesread >> 1];       // Calculate the checksum... (XOR)
              };
            } else {
              tempbyte = val;                           // Store the first hex digit first...
            };
 
            bytesread++;                                // ready to read next digit
          }
        }
 
        // Output to Serial:
 
        if (bytesread == 12) {                          // if 12 digit read is complete
          Serial.print("5-byte code: ");
          for (i=0; i<5; i++) {
            if (code[i] < 16) Serial.print("0");
            Serial.print(code[i], HEX);
            Serial.print(" ");
          }
          Serial.println();
 
          Serial.print("Checksum: ");
          Serial.print(code[5], HEX);
          Serial.println(code[5] == checksum ? " -- passed." : " -- error.");
          Serial.println();
        }
 
        bytesread = 0;
      }
      delay(1000);
    }
  }
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 41
Posts: 718
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ese ejemplo no funciona, pelie bastante, y una de las causas es que no envia los valores como dice la documentacion.

void loop()
{
  int  i;
  byte HayLectura = 0;

  int index = 0;
  boolean reading = false;
  char readByte;
// Seccion critica no interrumpir con nada
//  noInterrupts();
  if (Serial.available() > 0 )
  {
    if ( (val = Serial.read()) == 02 )
    {    //look for Start Of Text marker
              Serial.print("[SOT] ");
      // read until you get End Of Text
      for ( i = 0; (val = Serial.read()) != 03 ; i++)
      {
        Serial.print(val, HEX);
        Serial.print(" ");
        IDstring = val;
      }
              Serial.println("[EOT]");
              Serial.println();
              Serial.print("  IDString[");
      IDstring[10] = 0x00;        // tie off IDstring at the CR-LF
      HayLectura = 1;
              Serial.print(IDstring);
              Serial.println("] ");
              Serial.println();
      lcd.cursorTo(2, 0);
      lcd.printIn(IDstring);
    }
  }
  //rehabilitar interrupcione
//  interrupts();
  if (HayLectura == 1)
  {
      if (CompararTarjeta())
      {
        lcd.clear();
        lcd.cursorTo(1, 0);
        lcd.printIn("Bienvenido");
        lcd.cursorTo(2, 0);
        lcd.printIn(IDstring);
        BuzzerCorrecto();
        ActivarRele();
      }
      else
      {
        lcd.clear();
        lcd.cursorTo(1, 0);
        lcd.printIn("Tarjeta Invalida");
        lcd.cursorTo(2, 0);
        lcd.printIn(IDstring);
        BuzzerIncorrecto();
      }   
    HayLectura = 0;
  }
 
 
}
Logged

El que pregunta aprende, el que responde aprende a responder.

Pages: [1]   Go Up
Jump to: