#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// Definición de pines según tu instrucción
const int PIN_BOTON = 7;
const int PIN_LED = 8;
const int PIN_SERVO = 9;
// Instancias de objetos
Servo miServo;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección 0x27 es la estándar en Wokwi
void setup() {
// Configuración de pines
pinMode(PIN_BOTON, INPUT_PULLUP); // Usamos Pull-up para el botón
pinMode(PIN_LED, OUTPUT);
// Inicializar Servo
miServo.attach(PIN_SERVO);
miServo.write(0); // Posición inicial: Cerrado
// Inicializar LCD
lcd.init();
lcd.backlight();
// Mensaje inicial
lcd.setCursor(0, 0);
lcd.print("Sistema Listo");
delay(1000);
lcd.clear();
}
void loop() {
// Leer el botón (LOW cuando se presiona)
if (digitalRead(PIN_BOTON) == LOW) {
// ACCIÓN: ABRIR
digitalWrite(PIN_LED, HIGH); // Enciende LED
miServo.write(90); // Mueve servo a 90 grados
lcd.setCursor(0, 0);
lcd.print("Estado: Abriendo");
lcd.setCursor(0, 1);
lcd.print("Puerta Abierta "); // Espacios al final para limpiar texto previo
}
else {
// ACCIÓN: CERRAR / NORMAL
digitalWrite(PIN_LED, LOW); // Apaga LED
miServo.write(0); // Regresa servo a 0 grados
lcd.setCursor(0, 0);
lcd.print("Estado: Normal ");
lcd.setCursor(0, 1);
lcd.print("Puerta Cerrada ");
}
delay(50); // Pequeña pausa para evitar rebotes del botón
}