Go Down

Topic: Código Rfid (Read 4 times) previous topic - next topic

f0raster0

#15
Feb 07, 2013, 09:48 pm Last Edit: Feb 07, 2013, 10:59 pm by f0raster0 Reason: 1
Aun asi, me gustaría ver un dibujo del circuito o una foto.. me parece que el problema es de conexiones..

puedes probar esto "Arduino Basics: Simple Arduino Serial Communication"
http://arduinobasics.blogspot.co.nz/2012/07/arduino-basics-simple-arduino-serial.html
keep calm & carry on

maxid

El problema esta en la comparacion del codigo

   if (code == "5200043602820E")
Code solo trae 10 digitos que son el valor de la tarjeta, los 2 primero y 2 ultimos son datos adicionales que cambian segun su fabricante y el control de paridad
Lo dice en el ejemplo.

// 2 dígitos del código de fabricación
// 10 dígitos del código de tarjeta
// 2 dígitos bits de paridad

Estas comparando un array de 10 con uno de 14.
El que pregunta aprende, el que responde aprende a responder.

maxid

Puedes comentar donde lo adquiriste o si tiene el sitio web donde lo venden?
El que pregunta aprende, el que responde aprende a responder.

jemogu

Hola:

            ¡¡Por fin lo he solucionado!!

            El problema no era de conexiones, simplemente me confundí al escribir el code[] a identificar, poniéndolo entre  " " cuando debía hacerlo entre ' '.

            Muchas gracias a todos por vuestra ayuda.

            Adjunto el código con el cual he solucionado la identificación y respuesta idividual a cada tarjeta.

Code: [Select]
int  val = 0;
char code[14];
// 2 dígitos del código de fabricación
// 10 dígitos del código de tarjeta
// 2 dígitos bits de paridad
int bytesread = 0;
int ledrojo = 8;
int ledverde = 9;
int Rest = 2;


void setup() {

  Serial.begin(9600);     // RFID lector TX pin, Velocidad de transmisión: 9600, Bits de datos: 8, bit de parada: 1.
  pinMode(Rest,OUTPUT);      // Set 2 pin digital como OUTPUT para conectar con el pin RESET RFID
  pinMode(ledrojo,OUTPUT);
  pinMode(ledverde,OUTPUT);
  digitalWrite(Rest, HIGH);  // Activar el lector RFID



void loop() {

  if(Serial.available() > 0) {            // Si se dispone de datos de lector
    if((val = Serial.read()) == 10) {     // comprobar cabecera
      bytesread = 0;
      while(bytesread < 14) {             // leer 14 dígitos del código de
        if( Serial.available() > 0) {
          val = Serial.read();
          if((val == 10)||(val == 13)) {  // si el encabezado o dejar de bytes antes de la lectura de 10 dígitos
            break;                        // dejar de leer
          }
          code[bytesread] = val;          // añadir el dígito
          bytesread++;                    // listo para leer siguiente dígito
        }
      }
      if(bytesread == 14) {               // si tiene 14 dígitos de lectura se ha completado
        Serial.print("TAG code is: ");    // TAG posiblemente un buen
        Serial.println(code);        // imprimir el código de la etiqueta
       
       if (code[5]== '4') {                 // 4 es el código 5 de una de mis tarjetas 5200043602820E
        digitalWrite(ledrojo, HIGH);
       }
        if (code[5]== '0') {                 // 0 es el código 5 de otra de mis tarjetas 4B001085431305
       
        digitalWrite(ledverde, HIGH);
    }
      }
      bytesread = 0;
      digitalWrite(Rest, LOW);               // desactivar el lector de RFID por un momento para que no se inunde
      delay(1500);                        // esperar un poco
      digitalWrite(Rest, HIGH);              // Activar el lector RFID
      digitalWrite(ledrojo, LOW);
      digitalWrite(ledverde, LOW);
  }
  }
}
 

jemogu

Hola:

       En el código anterior hay que suprimir lo siguiente:


Code: [Select]
if(bytesread == 14) {               // si tiene 14 dígitos de lectura se ha completado
        Serial.print("TAG code is: ");    // TAG posiblemente un buen
        Serial.println(code);        // imprimir el código de la etiqueta

Go Up