#include <Keypad.h>
const uint8_t LEDS = 12;
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
const uint8_t GREEN_LED_PIN = 8; // Pin para la luz verde
const uint8_t RED_LED_PIN = 9; // Pin para la luz roja
const uint8_t RELAY_PIN = 15;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
// Pines conectados a LED1, LED2, LED3, ...LED12
uint8_t ledPins[LEDS] = { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 28, 27 };
uint8_t rowPins[ROWS] = { 26, 22, 21, 20 }; // Pines conectados a R1, R2, R3, R4
uint8_t colPins[COLS] = { 19, 18, 17, 16 }; // Pines conectados a C1, C2, C3, C4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String enteredCode = ""; // Variable para almacenar la secuencia de teclas ingresadas
void setup() {
for (uint8_t l = 0; l < LEDS; l++) {
pinMode(ledPins[l], OUTPUT);
digitalWrite(ledPins[0], LOW);
}
// Configurar los pines de las luces
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(RELAY_PIN, HIGH); // Asegurarse de que el relé esté apagado al inicio
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
// Mostrar la tecla presionada
Serial.print("Key pressed: ");
Serial.println(key);
// Agregar la tecla presionada a la secuencia
enteredCode += key;
// Verificar la longitud de la secuencia
if (enteredCode.length() == 3) {
if (enteredCode == "123") {
digitalWrite(GREEN_LED_PIN, HIGH); // Enciende la luz verde
digitalWrite(RED_LED_PIN, LOW); // Apaga la luz roja
Serial.println("Correct code! Green light ON.");
digitalWrite(RELAY_PIN, HIGH);
} else if (enteredCode == "123") {
digitalWrite(RELAY_PIN, HIGH); // Activa el relé
Serial.println("Code 123 entered! Relay ON.");
}
else {
digitalWrite(GREEN_LED_PIN, LOW); // Apaga la luz verde
digitalWrite(RED_LED_PIN, HIGH); // Enciende la luz roja
Serial.println("Incorrect code. Red light ON.");
}
enteredCode = ""; // Reiniciar la secuencia después de verificar
}
}
delay(10);
}