// Importa libreria Keypad
#include <Keypad.h>
#include "LiquidCrystal.h"
// Definiciones de pines
#define RS 25
#define EN 12
#define D4 32
#define D5 23
#define D6 33
#define D7 26
#define LED 13
// Constantes
const uint8_t FILAS = 4;
const uint8_t COLUMNAS = 4;
// Distribución del teclado
char teclas[FILAS][COLUMNAS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// Pines del teclado
uint8_t pinesColumnas[COLUMNAS] = {16, 4, 2, 15};
uint8_t pinesFilas[FILAS] = {19, 18, 5, 17};
// Objetos
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
Keypad teclado = Keypad(makeKeymap(teclas), pinesFilas, pinesColumnas, FILAS, COLUMNAS);
// Variables
char claveCorrecta[] = "8063";
String claveIngresada = "";
// Función setup
void setup() {
pinMode(LED, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
lcd.print("Ingrese clave");
Serial.begin(9600);
}
// Función loop
void loop() {
char tecla = teclado.getKey();
if (tecla) {
if (tecla == '#') {
if (claveIngresada == claveCorrecta) {
digitalWrite(LED, HIGH);
Serial.println("Clave correcta");
lcd.clear();
lcd.print("Clave Correcta");
} else {
digitalWrite(LED, LOW);
Serial.println("Clave incorrecta");
lcd.clear();
lcd.print("Clave incorrecta");
}
claveIngresada = "";
} else {
claveIngresada += tecla;
Serial.print("Entrada: ");
Serial.println(claveIngresada);
}
}
}