#include <LiquidCrystal.h>
#include <Key.h> //borrar si causa algunos problemas en compilación
#include <Keypad.h>
int a=0, b=0, c=0, d=0;//acumuladores de datos enteros para la contrseña.
int var=0; //incremento apara el switch.
int C1=1,C2=2,C3=3,C4=4;//contraseña....Ustedes pueden codificarlo la contraseña
char f='*'; //caracter para cubrir la contraseña.
int veces=0,incorrecto=0; //seguridad de solo 3 intentos para ingresar la contraseña correcta.
int aviso=3; //aviso para mostrar los intentos como seguridad para el usuario.
const byte filas = 4; //cuatro filas.
const byte columnas = 4; //cuatro columnas.
char tecla[filas][columnas] = {
{'7','8','9','A'},
{'4','5','6','B'},
{'1','2','3','C'},
{'*','0','#','D'}
};
byte pinFilas[filas] = {7, 6, 5, 4}; //conectarse a las patillas de salida de fila del teclado.
byte pinColumnas[columnas] = {3, 2, A4, A5}; //conectarse a las patillas de las columnas del teclado.
Keypad keypad = Keypad( makeKeymap(tecla), pinFilas, pinColumnas, filas, columnas );
LiquidCrystal lcd(13,12,11,10,9,8); //RS,E,D4,D5,D6,D7
void setup(){
lcd.begin(16,2); //LCD (16 COLUMNAS Y 2 FILAS)
pinMode(A0,OUTPUT); //TRUE PASSWORD CORRECTO LED YELLOW.
pinMode(A1,OUTPUT); //FALSE PASSWORD INCORRECTO LED RED.
}
void loop(){
char key = keypad.getKey();
if (key){
lcd.setCursor(5+var,1);
lcd.print(key),lcd.setCursor(5+var,1),lcd.print(f);//imprimimos el caracter en el lcd
key=key-48; //COVERCIÓN DE CHAR A ENTEROS -48 SEGUN EL CÓDIGO ASCII.
var++; //var se incrementa para los case1,case2,case3,case4.
switch(var){
case 1:
a=key; //almacenamos primer dígito para la contraseña que seria el 1
break;
case 2:
b=key; //almacenamos segundo dígito para la contraseña que seria el 2
break;
case 3:
c=key; //almacenamos tercer dígito para la contraseña que seria el 3
break;
case 4:
d=key; //almacenamos cuarto dígito para la contraseña que seria el 4
delay(100);
if(a==C1 && b==C2 && c==C3 && d==C4){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Password");
lcd.setCursor(3,1);
lcd.print("Correcto");
digitalWrite(A0,HIGH);
delay(700);
lcd.clear();
digitalWrite(A0,LOW);
}
else{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Password");
lcd.setCursor(2,1);
lcd.print("Incorrecto");
digitalWrite(A1,HIGH);
delay(400);
lcd.clear();
digitalWrite(A1,LOW);
}
//------Seguridad para la contraseña y sus restricciones-------------------//
if(a==C1 && b==C2 && c==C3 && d==C4){
veces=0;//si es correcto el password ,variable veces no se incremeta.
aviso=3;//variable aviso se mantiene en 3
}
else{
veces ++; //incrementamos los intentos incorrectos de password para el bloqueo.
aviso --; //decremento de variable aviso ,de 3 hasta 0 según las veces de fallas al ingresar el password.
lcd.setCursor(2,0);
lcd.print("LE QUEDA: ");
lcd.setCursor(13,0);
lcd.print(aviso);
lcd.setCursor(2,1);
lcd.print("OPORTUNIDAD");
if(aviso==0){
lcd.clear();
lcd.setCursor(5,0);
lcd.print("ALARMA");
lcd.setCursor(4,1);
lcd.print("ACTIVADO");
}
delay(300);lcd.clear();
}
while(veces>=3){
lcd.setCursor(1,0),lcd.print("Alerta Policia");
lcd.setCursor(4,1),lcd.print("Intrusos");
digitalWrite(A1,HIGH);
delay(100);
lcd.clear();
digitalWrite(A1,LOW);delay(50);
}//while es Bucle infinito de seguridad para bloquear los re intentos del password
var=0;
lcd.clear();
break;//se termina el
}
}
if(!key){lcd.setCursor(0,0),lcd.print("Digite Password");}//portada de inicio en el LCD
delay(2);
}
MUY BIEN KATAYAMA
ResponderBorrargracias amigo
BorrarDisculpa una pregunta donde puedo descargarme el ejercicio en Proteus
Borrardisculpa tengo un problema, donde el error me manda que la biblioteca .key no existe
ResponderBorrarborra solo la segunda linea #include key.h .Eso es por librerías diferentes borrarle no abra ningún problema
BorrarAcabo de modifique ahí esta resaltado de rojo,elimina eso.
Borraramigo me sale este error porque:
ResponderBorrarfatal error: Keypad.h: No such file or directory
#include
Tienes que tener instalado la librería de keypad para arduino
BorrarTinkercad
Borrarhttps://www.tinkercad.com/things/kzp1BkrGFrQ-control-de-acceso-seguro-con-arduinolcd-y-keypad
ResponderBorrarHOLA, AUN CONTESTAS A PREGUNTAS?
Queria preguntarte si podrias añadirle al codigo para instalarle un relé y un modulo Wifi para poder hacer llamadas al celular??
Y por supuesto el circuito.
Gracias.
se podría desactivar el bucle while al terminar la cantidad de intentos introduciendo nuevamente la contraseña correcta
ResponderBorrarpodria desactivar el codigo por medio de bluetooth?
ResponderBorrarSALUDOS AMIGO, PUEDES COMPARTIRME EL LINK O EN DONDE ESTA UBICADO EL ARCHIVO DE ISIS, GRACIAS
ResponderBorrarHola buena tardé oye un código dé arduino dé internet no tiene para utilizar por celular o otros aparatos sé puede utilizado internet
ResponderBorrarLibrería inválida encontrada en D:\Desktop\arduino-1.8.13\libraries\secuencialeds8: No encontrado archivos de encabezado (.h) en D:\Desktop\arduino-
ResponderBorrarbuenas noches, ud. cree que podría usar arduino uno r3 en vez del simulino
ResponderBorrarme funcionará?
ResponderBorrarbuenas, ud sabe por que me corre muy Rápido la simulación al momento de digital la clave aparece muy rápido ya que en su video resulta normal, o será por el delay que tendría que aumentarle mas tiempo.
ResponderBorrarque me recomienda
BUENAS,DONDE PUEDO ENCONTRAR LA LIBRERIA KEY.H
ResponderBorrar