#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int pinLedVerde = 10;
const int pinLedRojo = 11;
String codigoCorrecto = "1804";
String codigoIngresado = "";
const int maxDigitos = 6;
void setup() {
Serial.begin(9600);
pinMode(pinLedVerde, OUTPUT);
pinMode(pinLedRojo, OUTPUT);
digitalWrite(pinLedVerde, LOW);
digitalWrite(pinLedRojo, LOW);
Serial.println("Sistema Listo. Ingrese PIN:");
Serial.println("# = Confirmar | * = Borrar");
}
void loop() {
char key = keypad.getKey();
if (key) {
Serial.print(key);
if (key == '*') {
codigoIngresado = "";
Serial.println("\n[PIN Borrado] Ingrese de nuevo:");
digitalWrite(pinLedRojo, HIGH); delay(100); digitalWrite(pinLedRojo, LOW);
}
else if (key == '#') {
Serial.println("\nVerificando...");
if (codigoIngresado == codigoCorrecto) {
Serial.println("¡ACCESO CONCEDIDO!");
digitalWrite(pinLedVerde, HIGH);
delay(1500);
digitalWrite(pinLedVerde, LOW);
}
else {
Serial.println("ACCESO DENEGADO.");
for (int i = 0; i < 3; i++) {
digitalWrite(pinLedRojo, HIGH);
delay(300);
digitalWrite(pinLedRojo, LOW);
delay(300);
}
}
codigoIngresado = "";
Serial.println("\nIngrese PIN:");
}
else {
if (codigoIngresado.length() < maxDigitos) {
codigoIngresado += key;
Serial.print("");
}
}
}
}