byte red = 19;
byte green = 18;
byte yellow = 5;
int rMillis = 0, gMillis = 0, yMillis = 0;
int rPrev = 0, gPrev = 0, yPrev = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(yellow, OUTPUT);
}
void loop() {
// this speeds up the simulation
gMillis = millis();
digitalWrite(green, HIGH);
for (int i = 30; i >= 1;)
{
gMillis = millis();
if (gMillis - gPrev > 1000)
{
gPrev = gMillis;
Serial.println("Go for " + String(i) + " seconds");
i--;
}
}
digitalWrite(green, LOW);
digitalWrite(yellow, HIGH);
for (int i = 5; i >= 1;)
{
yMillis = millis();
if (yMillis - yPrev > 1000)
{
yPrev = yMillis;
Serial.println("Observe " + String(i) + " seconds");
i--;
}
}
digitalWrite(yellow, LOW);
digitalWrite(red, HIGH);
for (int i = 30; i >= 1;)
{
rMillis = millis();
if (rMillis - rPrev > 1000 )
{
rPrev = rMillis;
Serial.println("Stop " + String(i) + " seconds");
i--;
}
}
digitalWrite(red, LOW);
}