#include <Servo.h>
#define TRIG 7
#define ECHO 6
#define SERVO_PIN 9
#define BUZZER 4
Servo gate;
long getDistance() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
long distance = duration * 0.034 / 2;
return distance;
}
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
gate.attach(SERVO_PIN);
gate.write(0); // Gate initially closed
digitalWrite(BUZZER, LOW);
Serial.begin(9600);
}
void loop() {
long d1 = getDistance();
delay(50);
long d2 = getDistance();
delay(50);
long d3 = getDistance();
long distance = (d1 + d2 + d3) / 3; // Noise filtering
if(distance < 20) { // Vehicle detected
digitalWrite(BUZZER, HIGH); // Buzzer ON
gate.write(90); // Open gate
delay(3000);
digitalWrite(BUZZER, LOW); // Buzzer OFF
}
else {
gate.write(0); // Close gate
}
}