bool isCircuitOn = false;
bool isSetStartTime = true;
unsigned long startTime = 0;
const int red = 18;
const int green = 19;
const int yellow = 21;
const int on = 2;
const int off = 4;
void setup() {
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(on, INPUT);
pinMode(off, INPUT);
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(yellow, LOW);
}
void loop() {
isCircuitOn = digitalRead(on);
while (isCircuitOn) {
if (isSetStartTime) {
startTime = millis();
isSetStartTime = false;
}
lightSequence();
if (digitalRead(off)==HIGH) {
isSetStartTime = true;
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(yellow, LOW);
break;
}
}
}
void lightSequence() {
unsigned long currentTime = millis();
unsigned long interval = currentTime - startTime;
if (interval == 0) {
digitalWrite(red, HIGH);
}
else if (interval == 250) {
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
}
else if (interval == 500) {
digitalWrite(green, LOW);
digitalWrite(yellow, HIGH);
}
else if (interval == 750) {
digitalWrite(yellow, LOW);
}
else if (interval == 1000) {
isSetStartTime = true;
}
}