//Traffic Light
const int redLedPin = 5;
const int yellowLedPin = 6;
const int greenLedPin = 7;
const int buttonPin = 4;
int lastButtonState = 0;
int buttonState = 0;
bool sequenceRunning = false;
void setup() {
Serial.begin(9600);
Serial.println("Press button to toggle traffic light!");
pinMode(buttonPin, INPUT_PULLUP); //internal PULLUP Resistor
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
//Start states of LEDs
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
}
void trafficLightSequence() {
delay(1000);
//yellow
digitalWrite(greenLedPin, LOW);
digitalWrite(yellowLedPin, HIGH);
delay(2000);
//red
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, LOW);
delay(10000);
//red+yellow
digitalWrite(redLedPin, HIGH);
digitalWrite(yellowLedPin, HIGH);
delay(2000);
//green
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
digitalWrite(greenLedPin, HIGH);
}
void loop() {
// Read the value of pin 4.
buttonState = digitalRead(buttonPin);
//Serial.print(buttonState);
// Check if the button is pressed
if (buttonState == LOW && lastButtonState == HIGH && !sequenceRunning) {
sequenceRunning = true;
Serial.println("Button pressed...");
trafficLightSequence();
sequenceRunning = false;
}
lastButtonState = buttonState; // Update the last button state
//Refresh frequence
//delay(250);
}