//vars
unsigned long currentmillis = 0;
unsigned long beepmillis;
unsigned long lastWait = 0;
byte currentState = 0;
bool beeping = true;
void setup() {
Serial.begin(115200);
Serial.println("ready..");
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
currentmillis = millis();
if (currentState > 6) currentState = 0;
switch (currentState) {
case 0: beeper(); break;
case 1: lastWait = millis(); currentState++; break;
case 2: wait(5000); break;
case 3: beeper(); break;
case 4: lastWait = millis(); currentState++; break;
case 5: wait(5000); break;
case 6: beeper(); break;
}
}
void wait(int m) {
if (currentmillis - lastWait >= m) {
lastWait = millis();
currentState++;
}
}
void beeper() {
//lee si el flag de beep está en 1
if (beeping == true && currentmillis - beepmillis >= 1000UL) {
digitalWrite(LED_BUILTIN, HIGH);
beepmillis = millis();
beeping = false;
} else if ( currentmillis - beepmillis >= 1000UL) {
beepmillis = millis();
beeping = true;
digitalWrite(LED_BUILTIN, LOW);
currentState++;
}
}