#include <Keypad.h>
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
uint8_t colPins[COLS] ={2, 3, 4, 5} ;
uint8_t rowPins[ROWS] ={A4, A5, A2, A3} ;
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
int codigo = 0;
bool estado = false;
int contra = 1234;
int led1 = 6;
int led2 = 7;
int bocina = 8;
int sensor = 9;
int led9 = 10;
int led10 = 11;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(sensor, INPUT);
pinMode(bocina, OUTPUT);
Serial.begin(9600);
Serial.println("Esperar un tiempo antes de usar el sensor");
for (int i = 0; i <= 10; i++) {
digitalWrite(led10, HIGH);
delay(500);
digitalWrite(led10, LOW);
delay(500);
}
Serial.println("Sensor listo");
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
if ((key >= '0' && key <= '9') || key == '#') {
if (key != '#') {
codigo = codigo * 10 + (key - '0');
Serial.println("Tecla presionada: " + String(key));
}
if (key == '#' || codigo == contra) {
if (codigo == contra) {
if (!estado) {
Serial.println("ALARMA ACTIVADA");
} else {
Serial.println("ALARMA DESACTIVADA");
digitalWrite(led1, LOW); // Apagar LED 1
digitalWrite(led2, LOW); // Apagar LED 2
noTone(bocina); // Detener la bocina
}
estado = !estado;
codigo = 0;
} else {
Serial.println("Código incorrecto, vuelve a intentarlo");
codigo = 0;
}
}
}
}
if (!estado && digitalRead(sensor) == HIGH) {
Serial.println("MOVIMIENTO DETECTADO");
if (!estado) {
Serial.println("INGRESE EL CODIGO PARA ACTIVAR LA ALARMA");
digitalWrite(led9, HIGH);
delay(10000);
digitalWrite(led9, LOW);
Serial.println("Se desactiva");
}
}
if (estado && digitalRead(sensor) == HIGH) {
Serial.println("ALARMA ACTIVADA");
Serial.println("INGRESE EL CODIGO PARA DESACTIVAR LA ALARMA");
tone(bocina, 2500);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}
}