// Learn about the ESP32 WiFi simulation in
// https://docs.wokwi.com/guides/esp32-wifi
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
#include <Keypad.h>
const byte FILAS = 4; // definir numero de filas
const byte COLUMNAS = 4; // definir numero de columnas
char keys[FILAS][COLUMNAS] = { // define la distribucion de teclas
{'1','2','3','p'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinesFilas[FILAS] = {32,33,25,26}; // pinos correspondientes a las filas
byte pinesColumnas[COLUMNAS] = {27,14,12,13};Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS); // crea objeto
char TECLA; // almacena la tecla presionada
char CLAVE[7]; // almacena en un array 6 dígitos ingresados
char CLAVE_MAESTRA[7] = "123456"; // almacena en un array la contraseña maestra
byte INDICE = 0; // índice del arreglo
void setup() {
Serial.begin(115200);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("Contraseña:");
}
void loop() { TECLA = teclado.getKey();
if (TECLA) // comprueba e haya presionado una tecla
{
CLAVE[INDICE] = TECLA; // almacena en matriz la tecla presionada
INDICE++; // incrementa índice en uno
Serial.print(TECLA); // envia a monitor serial la tecla presionada
}
if(INDICE == 6) // si ya se almacenan los 6 digitos
{
if(!strcmp(CLAVE, CLAVE_MAESTRA)){ // compara clave ingresada con clave maestra
Serial.println("Correcta"); // imprime en monitor serial que es correcta la clave
LCD.setCursor(0, 1);
LCD.print("correcta");}
else{
Serial.println("Incorrecta"); // imprime en monitor serial que es incorrecta la clave
LCD.setCursor(0, 1);
LCD.print("Incorrecta ");
delay(1);}
INDICE = 0;
}
}