const byte ledPin = LED_BUILTIN;
const unsigned long timeout_ON = 2000;
const unsigned long timeout_OFF = 500;
unsigned long lastEvent;
enum : byte {LED_ON, LED_OFF} state = LED_OFF;
void ledOn() {
digitalWrite(ledPin, HIGH);
state = LED_ON;
lastEvent = millis();
Serial.println(F("ON"));
}
void ledOff() {
digitalWrite(ledPin, LOW);
state = LED_OFF;
lastEvent = millis();
Serial.println(F("OFF"));
}
void process() {
switch (state) {
case LED_ON:
if (millis() - lastEvent > timeout_ON) ledOff();
break;
case LED_OFF:
if (millis() - lastEvent > timeout_OFF) ledOn();
break;
}
}
void setup() {
pinMode(ledPin, OUTPUT);
ledOff();
Serial.begin(115200);
}
void loop() {
process();
}