#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(115115200); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); pinMode(LED_PIN, OUTPUT); servo.attach(SERVO_PIN); servo.write(0); // Puerta cerrada
}
void loop() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH); distance = duration * 0.034 / 2;
Serial.print("Distancia: ");
Serial.println(distance);
if (distance <= 20 && !puertaAbierta) { digitalWrite(LED_PIN, HIGH); servo.write(90); // Abrir puerta puertaAbierta = true; tiempoPuertaAbierta = millis();
}
if (puertaAbierta && millis() - tiempoPuertaAbierta >= 5000) { digitalWrite(LED_PIN, LOW); servo.write(0); // Cerrar puerta puertaAbierta = false;
}
delay(100);
}