// Traffic Light Control System using Ultrasonic Sensor (Closed-Loop)
#define TRIG 5 // Ultrasonic sensor trigger pin
#define ECHO 6 // Ultrasonic sensor echo pin
#define RED 9 // Red LED
#define YELLOW 10 // Yellow LED
#define GREEN 11 // Green LED
long duration;
int distance;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(RED, OUTPUT);
pinMode(YELLOW, OUTPUT);
pinMode(GREEN, OUTPUT);
Serial.begin(9600); // For debugging
}
void loop() {
// Measure distance using ultrasonic sensor
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
distance = duration * 0.034 / 2; // Convert to cm
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// If vehicle is detected (distance < 10cm), turn Green
if (distance < 10) {
digitalWrite(RED, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
delay(10000); // Green for 10 sec
}
else {
// Normal Traffic Light Sequence
digitalWrite(RED, HIGH);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, LOW);
delay(5000); // Red for 5 sec
digitalWrite(RED, LOW);
digitalWrite(YELLOW, HIGH);
digitalWrite(GREEN, LOW);
delay(2000); // Yellow for 2 sec
digitalWrite(RED, LOW);
digitalWrite(YELLOW, LOW);
digitalWrite(GREEN, HIGH);
delay(5000); // Green for 5 sec
}
}