Ayer lo hice funcionar sin problemas, pero hoy al intentar cargar el código de nuevo no me aparece nada en el serial monitor. El fallo es en la lectura de la variable "val", pues no tiene valor 2, sino FF. Pero no entiendo por qué
Serial.println("Esperando lectura...");
delay (2000);
if(Serial.available()) {
Serial.println("Serial listo...");
delay (2000);
val = Serial.read();
Serial.print("val es ");
Serial.println(val, DEC);
if(val == 2) { // check for header
bytesread = 0;
...
De manera que cuando lee la tag, me saca por pantalla el valor de la variable val. Este valor debería corresponder a un 2 para que el código continúe, pero sin embargo me dice que es 255 (en HEX FF). Por lo que el programa se salta el condicional y todo lo siguiente. De ahí que no aparezca inicialmente nada en el serial monitor.
He probado a cambiar en el condicional el 2 por el 0xFF y entonces si ejecuta todo el programa, pero me muestra que el código de la tag es FF FF FF FF FF.
Con el ejemplo que me has pasado me aparece en el serial monitor cada vez que paso la tag lo siguente:
Solucionado! Al parecer para que funcione se necesita conectar una resistencia Pull up de 4K7 entre los pines 11 y 9 del módulo ID-12. Habían varios comentarios con el mismo problema y luego la solución por Thomas en la página que me has pasado.
Parece mentira, pero hoy estoy probándolo de nuevo, incluida la resistencia de 4K7 entre los pines 11 y 9, y vuelvo a tener el mismo problema. Estoy empezando a desesperarme...
Tengo usados los pines 1(GND), 2(RESET), 8(Tx S0), 9(Rx S0), 10(LED) y 11(+5) tal y como indica el Datasheet:
Y no sé que puede suceder para volver a recibir las ÿÿÿÿÿÿÿÿÿÿ como valor de "val".
Hace 10 minutos de mi post anterior y justo ahora mismo he conseguido que funcione. He quitado la resistencia de 4K7 y he conectado el pin 2(RESET) a +5V y el pin 7 (+/- Format Selector) a GND. Aún así, estoy un tanto desconcertado porque no entiendo todo lo sucedido anteriormente xD.
Hola zEta, raro todo esto que te sucede...has revisado si hay algo más que te pueda estar dando problemas?? cables sueltos, baudrate??, fuente de alimentación, cosas asi??
Tengo alimentada la placa por USB y el cableado está bien aparentemente. En la página que me pasaste indica que el ID-12 debe estar alimentado por una tensión de entre 7 y 12 V para evitar posibles comportamientos no deseados del lector. Pero esto no he tenido oportunidad de probarlo aún.
Bueno, escribo de nuevo porque al parecer, el problema sigue ahí. No sé como solucionarlo porque he probado con las distintas soluciones que dan los comentarios del enlace pero sigo igual. Si pruebo el ejemplo básico si me funciona, en el loop va leyendo, guardando y sacando por el serialmonitor la variable c repetidas veces hasta que deja de leer:
/* EJEMPLO BASICO RFID ID12
*/
char val = 0; // variable to store the data from the serial port
void setup() {
Serial.begin(9600); // connect to the serial port
}
void loop () {
// read the serial port
if(Serial.available() > 0) {
val = Serial.read();
Serial.print(val, BYTE);
}
}
Pero escribiéndolo de ésta otra manera y me aparecen varias ÿÿÿÿ entre partes del código de la targeta leída. Utilizo for porque necesito evitarme tener que usar repetidamente la función general loop para mi proyecto y así guardar el valor de la tarjeta en un array en una sola ejecución del código.
/* RFID ID12
*/
char val = 0; // variable to store the data from the serial port
char code[12];
void setup() {
Serial.begin(9600); // connect to the serial port
}
void loop () {
// read the serial port
if(Serial.available() > 0) {
for (int i = 0; i < 13; i++) {
val = Serial.read();
code[i]=val;
}
for (int z = 0; z < 13; z++) {
Serial.print(code[z], BYTE);
}
}
}
Si alguien puede echarme un cable, se lo agradeceré con creces, porque no encuentro salida a este problema.
Saludos.
¿Alguien que haya trabajado con éste módulo y haya necesitado utilizar una red de estabilización de corriente? O simplemente que me dé una opinión de lo que pueda entender de los comentarios del enlace siguiente, en los que se supone que se exponen soluciones: