#include <ESP32Servo.h>
// Pins
#define PIR_PIN 13
#define BTN_PIN 14
#define SRV_PIN 18
Servo gate;
int isOpen = 0;
unsigned long t_start = 0;
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
pinMode(BTN_PIN, INPUT);
gate.attach(SRV_PIN);
gate.write(90); // Closed pos
Serial.println("System OK");
}
void loop() {
// Check triggers
if ((digitalRead(PIR_PIN) || digitalRead(BTN_PIN)) && !isOpen) {
Serial.println("Opening...");
gate.write(0);
isOpen = 1;
t_start = millis();
delay(500);
}
// Timer check
if (isOpen && (millis() - t_start > 10000)) {
Serial.println("Closing...");
gate.write(90);
isOpen = 0;
delay(500);
}
}