Pages: 1 [2]   Go Down
Author Topic: Código Rfid  (Read 4335 times)
0 Members and 1 Guest are viewing this topic.
NZ
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 07, 2013, 04:59:14 pm by f0raster0 » Logged

keep calm & carry on

Cordoba
Offline Offline
God Member
*****
Karma: 40
Posts: 686
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

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

Cordoba
Offline Offline
God Member
*****
Karma: 40
Posts: 686
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Puedes comentar donde lo adquiriste o si tiene el sitio web donde lo venden?
Logged

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

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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);
  }
  }
}
 
Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola:

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


Code:
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
Logged

Cordoba
Offline Offline
God Member
*****
Karma: 40
Posts: 686
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

pero solo preguntas por un solo digito de la tarjeta? Yo compre varias del mismo lote y tienen valores consecutivos, deberias comparar todos los digitos
Logged

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

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eso todavÍa no lo he averiguado. Estoy en ello.
Logged

NZ
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey jemogu, good new mate..¡¡   

eso es suficiente solo por ahora, debido a que si algún día sumas más y mas trenes llegará el momento en que tu comparación no funcionará :-( correctamente..

y como dice maxid, debes identificar el string completo, cuando comienza y cuando termina, esa información la puedes obtener desde el serial monitor, que te muestre por ejemplo:

Serial.println(code[1]) te mostrara el primero
Serial.println(code[2]) te mostrara el segundo
o bien y claro que es mucho mejor, si encuentras la hoja de datos tanto del lector como de las tarjetas..

sé que no es la mejor forma de hacer la comparación pero esto te servira para comparar todo el código :-)

voy a tomar la tarjeta, tag: 5200043602820E, debes agregar:

Code:
if (code[1]== '2' & & code[2]== '0' & code[3]== '0' & code[4]== '0' & code[5]== '4' & code[6]== '3' & code[7]== '6' & code[8]== '0' &  code[9]== '2' &code[10]== '8' & code[11]== '2' & code[12]== '0')
  digitalWrite(ledrojo, HIGH);
Logged

keep calm & carry on

Offline Offline
Newbie
*
Karma: 2
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok f0raster0: he probado como me dices y funciona perfectamente.

Muchas gracias por haberme ayudado que hago extensivas tanto a tí como a "ricobos" y "maxid"
Logged

Pages: 1 [2]   Go Up
Jump to: