// Define pin numbers for LEDs
const int pedestrianRedPin = 2;
const int pedestrianGreenPin = 3;
const int trafficRedPin = 4;
const int trafficYellowPin = 5;
const int trafficGreenPin = 6;
const int buzzerPin = 7;
const int buttonPin = 8; // Pin for the pedestrian button
void setup()
{
// Set LED pins as OUTPUT
pinMode(pedestrianRedPin, OUTPUT);
pinMode(pedestrianGreenPin, OUTPUT);
pinMode(trafficRedPin, OUTPUT);
pinMode(trafficYellowPin, OUTPUT);
pinMode(trafficGreenPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT);
// Initialize the traffic lights
initializeTrafficLights();
}
void loop()
{
// Check if the pedestrian button is pressed
if (digitalRead(buttonPin) == HIGH) {
// Activate pedestrian signal
pedestrianSignal();
} else {
// Activate traffic signal
trafficSignal();
}
}
void initializeTrafficLights()
{
// Initial state: Pedestrian signal is red, traffic signal is green
digitalWrite(pedestrianRedPin, HIGH);
digitalWrite(pedestrianGreenPin, LOW);
digitalWrite(trafficRedPin, LOW);
digitalWrite(trafficYellowPin, LOW);
digitalWrite(trafficGreenPin, HIGH);
}
void pedestrianSignal()
{
// Pedestrian signal: Red light on, Green light off
digitalWrite(trafficRedPin, HIGH);
digitalWrite(trafficYellowPin, LOW);
digitalWrite(trafficGreenPin, LOW);
digitalWrite(pedestrianRedPin, LOW);
digitalWrite(pedestrianGreenPin, HIGH);
// Allow pedestrians to cross for a certain duration (adjust as needed)
delay(5000);
//Active the buzzer for pedestrian signal
tone(buzzerPin, 5000);
delay(5000);
noTone(buzzerPin);
// Flash pedestrian signal for a short duration (adjust as needed)
for (int i = 0; i < 3; i++) {
digitalWrite(pedestrianGreenPin, LOW);
delay(500);
digitalWrite(pedestrianGreenPin, HIGH);
delay(500);
}
// Reset to initial state
initializeTrafficLights();
}
void trafficSignal()
{
// Traffic signal: Red light on, Green light off
digitalWrite(pedestrianRedPin, HIGH);
digitalWrite(pedestrianGreenPin, LOW);
digitalWrite(trafficRedPin, LOW);
digitalWrite(trafficYellowPin, HIGH);
delay(2000); // Yellow light for 2 seconds
digitalWrite(trafficYellowPin, LOW);
digitalWrite(trafficGreenPin, HIGH);
delay(5000); // Green light for 5 seconds
// Reset to red light for traffic
digitalWrite(trafficGreenPin, LOW);
digitalWrite(trafficYellowPin, HIGH);
delay(2000);
// Reset to initial state
initializeTrafficLights();
}