En la línea de "IF(ERROR==3){" tengo un problema. Alguien sabe que ocurre
El código completo es:
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
const byte numRows=4; // Declaración filas del Ketpad
const byte numCols=4; //Delaración columnas del Keypad
int buzzer =13;
int chapa = 12;
int sensorpuerta=15;
int posLCD = 5;
int cantdigit = 4;
int key = 2004;
int tempkey;
int tempkeyx;
int cantdigitx = cantdigit;
int mult = cantdigit;
int error = 0;
char hexaKeys[numRows][numCols]=
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
}; //Código de la disposición de conexiones de terminales del KeyPad.
byte rowPins [numRows]={11,10,9,8}; //Filas del 0 al 3
byte colPins [numCols]={A2,A3,A4,A5}; //Columnas del 0 al 3
Keypad keypad=(Keypad makeKeymap(hexaKeys))rowPins,colPins,numRows,numCols);
void setup() {
lcd.begin(16,2);
pinMode(buzzer,OUTPUT);
pinMode(chapa, OUTPUT);
pinMode(sensorpuerta, INPUT);
digitalWrite(sensorpuerta, HIGH);
}
//Si la tecla es presionada, será guardada en la variable "keypressed"
void loop() {
lcd.setCursor(1,0); //Linea donde empieza a escribir en el LCD
lcd.print("Ingrese la clave"); //Escribe en el LCD
/*-_-_-_-_-_-_-_-_-_--_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_*/
char Keypad = keypad.getKey(); // Obtiene el valor del teclado
if(Keypad!=NO_KEY) //Verifica si la tecla no está siendo presionada
{
lcd.setCursor(posLCD,1); //Donde empieza a escribir
lcd.print("*"); //Muestra en pantalla
posLCD=posLCD + 1 ; //*cursor del LCD + 1 posición
mult--; //resta el contador de dígitos
if(mult==0)
{
tempkey = (Keypad - 48) + key;
} //verifica el último digito ##Yo lo dudo##
if(mult!= 0)
{
int multiplox = mult;
tempkeyx= (Keypad - 48)*10;
mult--;
}
int tempkey= tempkeyx + tempkey;
}
cantdigitx--;
if(cantdigit == 0){
if(key== tempkey)//En caso de que la clave sea exitosa...
{
lcd.setCursor(5,1);
lcd.print("♦ OK ♦"); //Muestra en pantalla
delay(1000);
lcd.setCursor(1,1);
lcd.print("Puerta abierta"); //Muestra en pantalla
digitalWrite(chapa,HIGH);
delay(800);
digitalWrite(chapa,LOW);
delay(1000);
int open = 10;
int val = 0;
while (open!=0){val=digitalRead(sensorpuerta);}
if (val == LOW){open = 0;}
else {digitalWrite(buzzer,HIGH);}}
error = 0;
}
else { // En caso de que la clave sea incorrecta...
lcd.setCursor(5,1);
lcd.print("Error X"); //Muestra en pantalla
delay (1000);
error++;}
cantdigitx= cantdigit;
tempkey = 0;
mult = cantdigit;
posLCD = 5;
lcd.setCursor(0,1);
lcd.print (" ");} //Muestra en pantalla
if(error==3){ // En caso de que la clave sea incorrecta 3 veces ...
lcd.setCursor(3,1);
lcd.print("Bloqueado X X X"); //Muestra en pantalla
digitalWrite(buzzer,HIGH);
delay(1000);
digitalWrite(buzzer,LOW);
error=0;
lcd.setCursor(0,1);
lcd.print (" ")//Muestra en pantalla;
}
}
Es el código de una cerradura electrónica
