void setup() {
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, INPUT); // Use pin 7 for the pedestrian button
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
// Highway 1 green, Highway 2 red
digitalWrite(4, HIGH);
digitalWrite(12, HIGH);
delay(5000);
// Prepare for traffic light change
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
// Highway 1 green, Highway 2 red
digitalWrite(4, HIGH);
digitalWrite(12, HIGH);
delay(5000);
// Prepare for traffic light change
digitalWrite(11, HIGH);
delay(1000);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
// Pedestrian crossing sequence if the button is pressed
if (digitalRead(7) == HIGH) {
pedestrianCrossing();
}
}
void pedestrianCrossing() {
// Stop both highways
digitalWrite(5, HIGH);
digitalWrite(12, HIGH);
// Pedestrian signal
for (int i = 0; i < 3; i++) {
digitalWrite(6, HIGH);
digitalWrite(11, HIGH);
delay(500);
}
digitalWrite(6, LOW);
digitalWrite(11, LOW);
delay(500);
// Allow pedestrian to cross
digitalWrite(4, HIGH);
digitalWrite(13, HIGH);
delay(5000);
// Prepare for traffic light change
digitalWrite(4, LOW);
digitalWrite(13, LOW);
// Resume Normal traffic sequence
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(1000);
digitalWrite(6, LOW);
}