#include <ESP32Servo.h>
const int pirPin = 25;
const int trigPin = 0;
const int echoPin = 1;
const int buttonPin = 2;
const int servoPin = 4;
const int buzzerPin = 15;
Servo Servo;
bool motionDetected = false;
#define NOTE_B4 494
#define NOTE_F4 394
void setup() {
Servo.attach(4, 500, 2400);
pinMode(25, INPUT);
pinMode(0, OUTPUT);
pinMode(1, INPUT);
pinMode(2, INPUT_PULLUP);
pinMode(15, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(115200);
}
int pos = 0;
void loop() {
motionDetected = digitalRead(pirPin);
long duration, distance;
digitalWrite(0, LOW);
delayMicroseconds(2);
digitalWrite(0, HIGH);
delayMicroseconds(10);
digitalWrite(0, LOW);
duration = pulseIn(1, HIGH);
distance = (duration * 0.0343 / 2);
if (motionDetected || distance < 20) {
openDoors();
}
if (digitalRead(2) == HIGH) {
openDoors();
delay(200);
soundBuzzer();
closeDoors();
delay(15);
}
}
void openDoors() {
for (pos = 0; pos <= 90; pos += 1) {
Servo.write(pos);
delay(15);
}
}
void closeDoors() {
for (pos = 90; pos >= 0; pos -= 1) {
Servo.write(pos);
delay(15);
}
}
void soundBuzzer() {
digitalWrite(15, HIGH);
delay(500);
digitalWrite(15, LOW);
delay(500);
}