#include <ESP32Servo.h>
// Pines
const int pirPin = 13; // PIR conectado al pin 13
const int servoPin = 18; // Servo en pin PWM 18
const int ledPin = 2; // LED indicador en pin 2 (puedes usar otro)
Servo myServo;
bool movimientoDetectado = false;
unsigned long tiempoUltimoMovimiento = 0;
const unsigned long tiempoEspera = 2000; // Tiempo para regresar a 0°
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
myServo.attach(servoPin);
myServo.write(0); // Posición inicial del servo
digitalWrite(ledPin, LOW); // LED apagado
Serial.println("Sistema listo. Esperando movimiento...");
}
void loop() {
int estadoPIR = digitalRead(pirPin);
if (estadoPIR == HIGH && !movimientoDetectado) {
Serial.println("¡Movimiento detectado!");
movimientoDetectado = true;
digitalWrite(ledPin, HIGH); // Enciende LED
myServo.write(90); // Mueve el servo a 90°
tiempoUltimoMovimiento = millis();
}
if (movimientoDetectado && millis() - tiempoUltimoMovimiento >= tiempoEspera) {
myServo.write(0); // Vuelve el servo a 0°
digitalWrite(ledPin, LOW); // Apaga LED
movimientoDetectado = false;
Serial.println("Servo en 0°, LED apagado.");
}
}