#define GREENLED_PIN 13
#define YELLOWLED_PIN 12
#define REDLED_PIN 11
#define BUTTON_PIN 10
#define ONE_SECOND 1000
int currentButtonValue = 0;
int previousButtonValue = 0;
void setup() {
pinMode(GREENLED_PIN, OUTPUT);
pinMode(YELLOWLED_PIN, OUTPUT);
pinMode(REDLED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT);
digitalWrite(GREENLED_PIN, HIGH);
}
void trafficLight() {
digitalWrite(GREENLED_PIN, LOW);
digitalWrite(YELLOWLED_PIN, HIGH);
delay(ONE_SECOND);
digitalWrite(YELLOWLED_PIN, LOW);
digitalWrite(REDLED_PIN, HIGH);
delay(ONE_SECOND * 3);
digitalWrite(REDLED_PIN, LOW);
digitalWrite(GREENLED_PIN, HIGH);
}
void loop() {
currentButtonValue = digitalRead(BUTTON_PIN);
if (currentButtonValue == 1 && currentButtonValue != previousButtonValue)
trafficLight();
previousButtonValue = currentButtonValue;
}