hey.. he probado este firmware y hace lo siguiente
1- cuando detecta el tag que tiene "B" enciende y deja encendido el led en el pin 13 y muestra la "B" en el serial monitor
2- pero cuando lee otra tarjeta enciende y apaga el led, hasta dejarlo apagado, mismo pin 13, no tengo más led =( aquí muestra en serial monitor el valor que está en la posición 13 del string de la tarjeta.
Si tomas el código y lo cargas sin hacer cambios el punto 2 se cumplirá si o si
cuentanos que va resultando 8)
lo que sí aun no entiendo porque debo pasar dos veces la tarjeta :~ para lograr hacer lo que indique arriba
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 = 13;
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[13]); // imprimir el código de la etiqueta
// Serial.println(code); // imprimir el código de la etiqueta
if (code[13] == 'B') //mi tag es: x2400CC392AFBxxx y el otro tag que tengo es x2400CC572897xxx
{
Serial.println(code[13]);
digitalWrite(13, HIGH);
}
else
{
Serial.println(code[13]);
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000);
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000);
}
}
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);
//}
}
}