int red = 1;
int yellow = 2;
int green = 3;
int lamp_count = 4;
//keep track on current lamps set
int pos = 0;
void setup() {
//turn on all red light
while (pos < lamp_count) {
digitalWrite(red + (pos * 3), 1);
pos += 1;
}
}
//declaring a new func to control a set of lamps
int lamp(int a, int b, int c, int ms) {
digitalWrite(red + (pos * 3), a);
digitalWrite(yellow + (pos * 3), b);
digitalWrite(green + (pos * 3), c);
delay(ms);
}
//animate the lamps
int blink(int rep, int ms) {
int count = 0;
lamp(0, 1, 0, ms / 2);
lamp(0, 0, 1, ms);
//yellow light blinking
while (count < rep) {
lamp(0, 1, 0, ms / (rep * 2));
lamp(0, 0, 0, ms / (rep * 2));
count += 1;
}
lamp(1, 0, 0, ms / 2);
}
void loop() {
while (pos < lamp_count) {
//applying the animation into all set of lamps
blink(5, 2000);
//change the pin to the next lamps set
pinMode(red + (pos * 3), OUTPUT);
pinMode(yellow + (pos * 3), OUTPUT);
pinMode(green + (pos * 3), OUTPUT);
pos += 1;
}
pos = 0;
}