#include <ESP32Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Configuración del servo
Servo servo;
const int pinServo = 4; // D4
// Configuración de LEDs
const int ledRojo = 5; // D5
const int ledVerde = 2; // D3
// Configuración LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección 0x27, 16 columnas x 2 filas
void setup() {
// Inicializar servo
servo.attach(pinServo);
servo.write(0); // Posición inicial 0°
// Configurar LEDs
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
digitalWrite(ledRojo, HIGH); // Encender rojo inicialmente
digitalWrite(ledVerde, LOW);
// Inicializar LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Parqueo");
}
void loop() {
// Estado inicial: servo en 0°
static bool puertaAbierta = false;
if (!puertaAbierta) {
// Esperar 20 segundos antes de mover el servo
delay(20000);
// Mover servo instantáneamente a 90°
servo.write(90);
// Cambiar estado
puertaAbierta = true;
// Actualizar LEDs
digitalWrite(ledRojo, LOW); // Apagar LED rojo
digitalWrite(ledVerde, HIGH); // Encender LED verde
// Actualizar LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Bienvenido");
// Mantener abierto por 5 segundos
delay(5000);
// Cerrar puerta (volver a 0° instantáneamente)
servo.write(0);
// Volver al estado inicial
puertaAbierta = false;
digitalWrite(ledVerde, LOW); // Apagar LED verde
digitalWrite(ledRojo, HIGH); // Encender LED rojo
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Parqueo");
}
}