#include <LiquidCrystal.h> // Incluye la biblioteca para el LCD
// Definición de pines para el LCD
const int rs = 12; // Pin RS del LCD
const int en = 11; // Pin E del LCD
const int d4 = 5; // Pin D4 del LCD
const int d5 = 4; // Pin D5 del LCD
const int d6 = 8; // Pin D6 del LCD
const int d7 = 2; // Pin D7 del LCD
// Inicializa el objeto LiquidCrystal con los pines definidos
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int MOTION_SENSOR_PIN = 7; // Pin donde está conectado el sensor de movimiento
const int LED_PIN = 3; // Pin donde está conectado el LED
int motionStateCurrent = LOW; // Estado actual del sensor de movimiento
int motionStatePrevious = LOW; // Estado anterior del sensor de movimiento
const int BUZZER_PIN = 9;
void setup() {
Serial.begin(9600);
pinMode(MOTION_SENSOR_PIN, INPUT); // Configura el pin del sensor como entrada
pinMode(LED_PIN, OUTPUT); // Configura el pin del LED como salida
pinMode(BUZZER_PIN, OUTPUT);
lcd.begin(16, 2); // Inicializa el LCD con 16 columnas y 2 filas
lcd.print("WAITING MOTION"); // Mensaje inicial en el LCD
}
void loop() {
motionStatePrevious = motionStateCurrent; // Guarda el estado anterior
motionStateCurrent = digitalRead(MOTION_SENSOR_PIN); // Lee el estado actual
// Verifica si hubo un cambio de LOW a HIGH (detección de movimiento)
if (motionStatePrevious == LOW && motionStateCurrent == HIGH) {
digitalWrite(LED_PIN, HIGH);
digitalWrite(BUZZER_PIN, HIGH); // Activar el zumbador
lcd.clear();
lcd.print("MOTION DETECTED!");
}
else if (motionStatePrevious == HIGH && motionStateCurrent == LOW) {
digitalWrite(LED_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW); // Desactivar el zumbador
lcd.clear();
lcd.print("MOTION STOPPED!");
}
}