byte i = 0;
byte buttonPin = 3;
byte ledPin[] = {8, 9, 10, 11}; // Array of pins; RED, YEL, GRN
unsigned long timer, interval = 1000, light = 1, walk = 2;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
for (int i = 0; i < 4; i++) {
pinMode (ledPin[i], OUTPUT); // Configure LED pins
digitalWrite(ledPin[i], LOW); // Turn off all LEDs
}
digitalWrite(ledPin[0], HIGH); // red ON
}
void loop() {
if (millis() - timer > interval * light) { // check light interval
timer = millis(); // interval has passed, reset timer
digitalWrite(ledPin[i], LOW); // turn "this" LED off
i++; // next LED
if (i > 2) i = 0; // keep the pin numbers in-bounds
digitalWrite(ledPin[i], HIGH); // turn "next" LED on
}
if (!digitalRead(buttonPin)) { // button reads LOW when PRESSED
for (int i = 0; i < 3; i++) // all color LEDs...
digitalWrite(ledPin[i], LOW); // ...turn off.
digitalWrite(ledPin[3], 1); // walk LED on
delay(interval * walk); // blocking delay to stop all lights.
digitalWrite(ledPin[3], 0); // walk LED off
}
}