#include <ESP32Servo.h>
#define TRIG_PIN 12
#define ECHO_PIN 14
#define LED_PIN 2
#define SERVO_PIN 13
Servo servo;
long duration;
int distance;
bool puertaAbierta = false;
unsigned long tiempoPuertaAbierta;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
servo.attach(SERVO_PIN);
servo.write(0); // Puerta cerrada
}
void loop() {
// Activar el sensor ultrasónico
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Medir distancia
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distancia: ");
Serial.println(distance);
// Si detecta algo cerca
if (distance <= 60 && !puertaAbierta) {
digitalWrite(LED_PIN, HIGH);
servo.write(150); // Abrir puerta
puertaAbierta = true;
tiempoPuertaAbierta = millis();
}
// Pasados 5 segundos, cerrar puerta
if (puertaAbierta && millis() - tiempoPuertaAbierta >= 5000) {
digitalWrite(LED_PIN, LOW);
servo.write(0); // Cerrar puerta
puertaAbierta = false;
}
delay(100);
}