const int pin_red_L12 = 13;
const int pin_yellow_L12 = 12;
const int pin_green_L12 = 11;
const int pin_red_L3 = 10;
const int pin_yellow_L3 = 9;
const int pin_green_L3 = 8;
enum State_t {
all_red_1, yellow_L12, green_L12, yellow_L12_end,
all_red_2, yellow_L3, green_L3, yellow_L3_end
};
State_t curr_state;
void setup() {
pinMode(pin_red_L12, OUTPUT);
pinMode(pin_yellow_L12, OUTPUT);
pinMode(pin_green_L12, OUTPUT);
pinMode(pin_red_L3, OUTPUT);
pinMode(pin_yellow_L3, OUTPUT);
pinMode(pin_green_L3, OUTPUT);
curr_state = all_red_1;
}
void loop() {
switch (curr_state) {
case all_red_1:
setLights(HIGH, LOW, LOW, HIGH, LOW, LOW);
delay(5000);
curr_state = yellow_L12;
break;
case yellow_L12:
setLights(LOW, HIGH, LOW, HIGH, LOW, LOW);
delay(1000);
curr_state = green_L12;
break;
case green_L12:
setLights(LOW, LOW, HIGH, HIGH, LOW, LOW);
delay(5000);
curr_state = yellow_L12_end;
break;
case yellow_L12_end:
setLights(LOW, HIGH, LOW, HIGH, LOW, LOW);
delay(1000);
curr_state = all_red_2;
break;
case all_red_2:
setLights(HIGH, LOW, LOW, HIGH, LOW, LOW);
delay(5000);
curr_state = yellow_L3;
break;
case yellow_L3:
setLights(HIGH, LOW, LOW, LOW, HIGH, LOW);
delay(1000);
curr_state = green_L3;
break;
case green_L3:
setLights(HIGH, LOW, LOW, LOW, LOW, HIGH);
delay(5000);
curr_state = yellow_L3_end;
break;
case yellow_L3_end:
setLights(HIGH, LOW, LOW, LOW, HIGH, LOW);
delay(1000);
curr_state = all_red_1;
break;
}
}
void setLights(bool r12, bool y12, bool g12, bool r3, bool y3, bool g3) {
digitalWrite(pin_red_L12, r12);
digitalWrite(pin_yellow_L12, y12);
digitalWrite(pin_green_L12, g12);
digitalWrite(pin_red_L3, r3);
digitalWrite(pin_yellow_L3, y3);
digitalWrite(pin_green_L3, g3);
}