// Pin Definitions
const int redLED = 2;
const int yellowLED = 3;
const int greenLED = 4;
const int pedestrianLED = 5;
const int buttonPin = 6;
const int trigPin = 7;
const int echoPin = 8;
const int buzzerPin = 9;
// Timing variables
const int redDelay = 5000; // 5 seconds for red light
const int yellowDelay = 2000; // 2 seconds for yellow light
const int greenDelay = 5000; // 5 seconds for green light
const int pedestrianDelay = 5000; // 5 seconds for pedestrian light
void setup() {
// Initialize pins
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(pedestrianLED, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600); // Start the serial communication
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
// Activate pedestrian crossing
digitalWrite(pedestrianLED, HIGH);
digitalWrite(redLED, HIGH); // Turn traffic light red
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
Serial.println("Pedestrian Light: GREEN, Traffic Light: RED");
delay(pedestrianDelay);
digitalWrite(pedestrianLED, LOW); // Turn off pedestrian light
} else {
// Normal traffic light sequence
trafficLightSequence();
}
// Vehicle detection
checkVehicleDistance();
}
void trafficLightSequence() {
// Red light
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, LOW);
Serial.println("Traffic Light: RED");
delay(redDelay);
// Green light
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, LOW);
digitalWrite(greenLED, HIGH);
Serial.println("Traffic Light: GREEN");
delay(greenDelay);
// Yellow light
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(greenLED, LOW);
Serial.println("Traffic Light: YELLOW");
delay(yellowDelay);
}
void checkVehicleDistance() {
// Send a pulse to trigger pin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read echo pin
long duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2;
Serial.print("Vehicle Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Sound alarm if vehicle is detected within 10 cm and pedestrian light is green
if (digitalRead(pedestrianLED) == HIGH && distance <= 10) {
tone(buzzerPin, 150); // Sound buzzer
Serial.println("Warning: Vehicle detected! Alarm ON");
} else {
noTone(buzzerPin); // Stop buzzer
Serial.println("No vehicle detected or pedestrian light is off. Alarm OFF");
}
}