holaaaa, señores tengo un problemón!!!
creo que se me ha cascado la placa, arduino uno r3, pero me lo podrían confirmar??
este es el código que uso, la mayoría calcado de este post, omitiendo la parte del RFID y añadiendo como dije anteriormente el do...while para esperar al sensor. una vez funcionó, pero al día siguiente ya no funcionaba y ocasionalmente ha vuelto a funcionar pero por poco rato, una o dos veces.
el caso es que en el codigo de ejemplo Button la placa me hace una cosa rara. en reposo, con el interruptor abierto el led 13 está encendido, aunque poco, y cuando pulso el interruptor se ilumina más fuerte
tambien usando el codigo de ejemplo DigitalReadSerial me hace una cosa rara, pues abriendo la ventana del monitor serial, hay veces que muestra un 1 sin tocar el interruptor, aunque cuando está mostrando 0 sí reacciona al pulsar el interruptor, mostrando un 1
sacadme de dudas por favor... es arduino uno r3 un pelín malo?? de hecho compré dos tarjetas y el atmega de una ya cascó,
gracias por vuestra atención
// ARDUINO UNO + RFID-RC522 + KEYPAD MATRIX 4X3
//Sketch que, por medio de un relé, activa la apertura de una cerradura eléctrica
//Funciona indistintamente por RFID mediante una tarjeta (o llave tipo moneda)
//Y tambien introduciendo una secuencia de caracteres determinada en el teclado
// en este ejemplo la clave será "1234" y el caracter # al final.
//La ultima parte del código referente a la apertura con el KeyPad corresponde
//al usuario "Noter" del Foro Arduino.cc. ¡¡Gracias!!
//INICIO CONFIGURACION TECLADO
#include <Keypad.h>
const byte filas=4;
const byte columnas=3;
byte pinsfilas[filas]={5,6,4,3}; //en orden F1,F2,F3,F4
byte pinscolumnas[columnas]={0,1,2};//en orden C1,C2,C3
char teclas[filas][columnas]=
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'},
};
Keypad teclado = Keypad(makeKeymap(teclas),pinsfilas,pinscolumnas,filas,columnas);
//FIN CONFIGURACION TECLADO
char tecla; // Variable para almacenar la tecla pulsada en el KeyPad
//____________________________________
char *clave="3366"; // *****1234 ES LA CLAVE DE 4 DÃ?GITOS PARA QUE ABRA CON EL TECLADO. MODIFICAR*********
char *introducida="xxxx"; // Para guardar espacio en memoria para la clave que introducimos
int indiceTeclado=0;
int x = 0;
//____________________________________
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);//Pin que activa el relé de apertura de la puerta
digitalWrite(13,LOW);
}
void loop()
{
//INICIO CODIGO APERTURA CON TECLADO
tecla=teclado.getKey();
if (tecla != NO_KEY)//si se presionó una tecla
{
if (tecla == '9')//si tecleamos el caracter "#" del KeyPad comprobaremos si abrir la puerta, y reiniciaremos clave introducida
{
if (indiceTeclado==4) // Si no hemos introducido cuatro caracteres, ni comprobamos
{
bool coincide=true;
for (int i=0;i<4;i++){
if (clave[i]!=introducida[i])
{
coincide=false;
Serial.println(" ");
Serial.println("Clave INCORRECTA");
Serial.println(" ");
break; //si uno de los caracteres no coincide, salimos del bucle
}
}
if (coincide)
{
Serial.println(" ");
Serial.println("Usuario Autorizado. Bienvenido");
Serial.println(" ");
//Activa el Relé mientras el pin 8 es "0"
digitalWrite(13, HIGH);
delay(1500);
do{
x = digitalRead(9);
digitalWrite(13, HIGH);
delay(50);
} while (x == LOW);
digitalWrite(13, LOW);
}
}
Serial.println();
indiceTeclado=0; // Siempre que se pulse 9 "borramos" la clave
}
else // Si la tecla no es 9
{
if (indiceTeclado < 4) // Cuando existan ya cuatro caracteres "pasamos de recibir más"
{
introducida[indiceTeclado]=tecla;
indiceTeclado++;
Serial.print(tecla);
}
}
}
//FIN CODIGO APERTURA CON TECLADO
}