#include <Servo.h>
#define TRIG_PIN 10 // Purple
#define ECHO_PIN 11 // Cyan
#define SERVO_PIN 9 // Blue
#define BUZZER_PIN 8 // Yellow
#define LED_PIN 7 // Green
Servo doorServo;
bool doorOpen = false;
int threshold = 20;
void setup() {
Serial.begin(9600);
doorServo.attach(SERVO_PIN);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
long duration;
int distance;
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("Distance: ");
Serial.println(distance);
if (distance < threshold && !doorOpen) {
openDoor();
alert();
} else if (distance >= threshold && doorOpen) {
closeDoor();
}
delay(200);
}
void openDoor() {
doorServo.write(90);
doorOpen = true;
Serial.println("Door Opened");
}
void closeDoor() {
doorServo.write(0);
doorOpen = false;
Serial.println("Door Closed");
}
void alert() {
digitalWrite(LED_PIN, HIGH);
tone(BUZZER_PIN, 1000);
delay(1000);
noTone(BUZZER_PIN);
digitalWrite(LED_PIN, LOW);
}