constexpr int8_t redLed = 2;
constexpr int8_t yellowLed = 3;
constexpr int8_t greenLed = 4;
enum ledStates : int8_t {
STOP,
READY_TO_GO,
GO,
READY_TO_STOP
};
ledStates status = STOP;
void setup() {
Serial.begin(9600);
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void stop() {
digitalWrite(redLed, HIGH);
digitalWrite(yellowLed, HIGH);
digitalWrite(greenLed, HIGH);
delay(4000);
}
void readyToGo() {
digitalWrite(redLed, HIGH);
digitalWrite(yellowLed, HIGH);
digitalWrite(greenLed, LOW);
delay(1000);
}
void go() {
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, HIGH);
delay(5000);
}
void readyToStop() {
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, HIGH);
delay(1000);
}
void loop() {
switch(status) {
case STOP:
stop();
break;
case READY_TO_GO:
readyToGo();
break;
case GO:
go();
break;
case READY_TO_STOP:
readyToStop();
break;
}
}