// PINOUT
const int buttonPin = 2;
const int waitPin = 3;
const int walkRedPin = 4;
const int walkGreenPin = 5;
const int carRedPin = 6;
const int carOrangePin = 7;
const int carGreenPin = 8;
// TIME
const int waitDuration = 3000;
const int blinkDuration = 250;
const int walkDuration = 10000;
void setup() {
// Define pinout:
pinMode(buttonPin, INPUT);
pinMode(waitPin, OUTPUT);
pinMode(walkRedPin, OUTPUT);
pinMode(walkGreenPin, OUTPUT);
pinMode(carRedPin, OUTPUT);
pinMode(carOrangePin, OUTPUT);
pinMode(carGreenPin, OUTPUT);
// Initial states:
setDefault();
}
void loop() {
// put your main code here, to run repeatedly:
if (digitalRead(buttonPin) == HIGH) {
int blinks = waitDuration / blinkDuration;
// wait before switching to orange
for (int i = 0; i < blinks; i++) {
digitalWrite(waitPin, i % 2 == 0 ? HIGH : LOW);
delay(blinkDuration);
}
digitalWrite(waitPin, LOW);
// switch to orange
digitalWrite(carGreenPin, LOW);
digitalWrite(carOrangePin, HIGH);
delay(waitDuration);
// switch to red
digitalWrite(carOrangePin, LOW);
digitalWrite(carRedPin, HIGH);
delay(waitDuration);
// switch to green for walkers
digitalWrite(walkRedPin, LOW);
digitalWrite(walkGreenPin, HIGH);
delay(walkDuration);
// switch back to red for walkers
digitalWrite(walkGreenPin, LOW);
digitalWrite(walkRedPin, HIGH);
delay(waitDuration);
// return to initial states
setDefault();
}
}
void setDefault() {
digitalWrite(waitPin, HIGH);
digitalWrite(walkRedPin, HIGH);
digitalWrite(walkGreenPin, LOW);
digitalWrite(carRedPin, LOW);
digitalWrite(carOrangePin, LOW);
digitalWrite(carGreenPin, HIGH);
}