#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
const int buzzer = 12;
LiquidCrystal_I2C lcd(0x27, 20, 4);
const byte FILAS = 4;
const byte COLUMNAS = 4;
char teclas[FILAS][COLUMNAS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinesFilas[FILAS] = {9,8,7,6};
byte pinesColumnas[COLUMNAS] = {5,4,3,2};
Keypad keypad = Keypad(
makeKeymap(teclas),
pinesFilas,
pinesColumnas,
FILAS,
COLUMNAS
);
const int ledVerde = 10;
const int ledRojo = 11;
String claveCorrecta = "1804";
String claveIngresada = "";
void setup() {
pinMode(ledVerde, OUTPUT);
pinMode(ledRojo, OUTPUT);
pinMode(buzzer, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("INGRESE CLAVE:");
}
void loop() {
char tecla = keypad.getKey();
if(tecla){
if(isDigit(tecla)){
claveIngresada += tecla;
lcd.setCursor(claveIngresada.length()-1,1);
lcd.print("*");
}
if(claveIngresada.length() == 4){
lcd.clear();
if(claveIngresada == claveCorrecta){
lcd.setCursor(0,0);
lcd.print("ACCESO");
lcd.setCursor(0,1);
lcd.print("PERMITIDO");
digitalWrite(ledVerde,HIGH);
tone(buzzer, 2000);
delay(1000);
noTone(buzzer);
digitalWrite(ledVerde,LOW);
}else{
lcd.setCursor(0,0);
lcd.print("CLAVE");
lcd.setCursor(0,1);
lcd.print("INCORRECTA");
for(int i=0;i<3;i++){
digitalWrite(ledRojo,HIGH);
tone(buzzer, 1000); // 1000 Hz
delay(300);
digitalWrite(ledRojo,LOW);
noTone(buzzer);
delay(300);
}
}
claveIngresada = "";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("INGRESE CLAVE:");
}
}
}