int TRAFFIC_RED = 13;
int TRAFFIC_YELLOW = 12;
int TRAFFIC_GREEN = 11;
int PED_GREEN = 6;
int PED_RED = 7;
int BUTTON_PIN = 3;
int buttonState = 0;
void setup() {
pinMode(TRAFFIC_RED, OUTPUT);
pinMode(TRAFFIC_YELLOW, OUTPUT);
pinMode(TRAFFIC_GREEN, OUTPUT);
pinMode(PED_RED, OUTPUT);
pinMode(PED_GREEN, OUTPUT);
pinMode(BUTTON_PIN, INPUT);
}
void loop() {
// inital state
digitalWrite(TRAFFIC_RED, 0);
digitalWrite(TRAFFIC_YELLOW, 0);
digitalWrite(TRAFFIC_GREEN, 1);
digitalWrite(PED_RED, 1);
digitalWrite(PED_GREEN, 0);
buttonState = digitalRead(BUTTON_PIN);
if (buttonState == HIGH) {
// show traffic yellow for 2sec
digitalWrite(TRAFFIC_GREEN, 0);
digitalWrite(TRAFFIC_YELLOW, 1);
delay(2000);
// show red traffic light and green pedestrian
digitalWrite(TRAFFIC_YELLOW, 0);
digitalWrite(TRAFFIC_RED, 1);
digitalWrite(PED_RED, 0);
digitalWrite(PED_GREEN, 1);
delay(4000);
// red ped light flash for 6 second
digitalWrite(PED_GREEN, 0);
digitalWrite(PED_RED, 1);
delay(1000);
digitalWrite(PED_RED, 0);
delay(1000);
digitalWrite(PED_RED, 1);
delay(1000);
digitalWrite(PED_RED, 0);
delay(1000);
digitalWrite(PED_RED, 1);
delay(1000);
digitalWrite(PED_RED, 0);
delay(1000);
}
}