#include <ESP32Servo.h>
const int irSensorPin = 4;
const int servoPin = 18;
const int threshold = 500; // Threshold value for IR sensor detection
const int openAngle = 180; // Servo motor open position
const int closeAngle = 0; // Servo motor close position
const unsigned long doorOpenTime = 5000; // Time (in ms) the door remains open
Servo myServo;
bool doorOpen = false;
unsigned long lastDetectedTime = 0;
void setup() {
Serial.begin(115200);
myServo.attach(servoPin);
myServo.write(closeAngle);
Serial.println("Door is closed");
}
void loop() {
int irValue = analogRead(irSensorPin);
if (irValue > threshold) {
if (!doorOpen) {
myServo.write(openAngle);
Serial.println("Door is open");
doorOpen = true;
lastDetectedTime = millis();
}
} else if (doorOpen && (millis() - lastDetectedTime > doorOpenTime)) {
myServo.write(closeAngle);
Serial.println("Door is closed");
doorOpen = false;
}
delay(100);
}