const int redPin = 13;
const int yellowPin = 12;
const int greenPin = 11;
const int pedRedPin = 10;
const int pedGreenPin = 9;
const int pedButtonPin = 2;
const int delayTime = 1000;
const int pedDelayTime = 5000;
bool pedestrianRequest = false;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(pedRedPin, OUTPUT);
pinMode(pedGreenPin, OUTPUT);
pinMode(pedButtonPin, INPUT_PULLUP);
}
void loop() {
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
delay(delayTime);
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, LOW);
delay(delayTime / 2);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, HIGH);
delay(delayTime);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, LOW);
delay(delayTime / 2);
if (digitalRead(pedButtonPin) == LOW) {
pedestrianRequest = true;
delay(100);
}
if (pedestrianRequest) {
digitalWrite(pedRedPin, LOW);
digitalWrite(pedGreenPin, HIGH);
delay(pedDelayTime);
digitalWrite(pedRedPin, HIGH);
digitalWrite(pedGreenPin, LOW);
pedestrianRequest = false;
}
}