Macchina a stati finiti (FSM) basata su switch case

Qualcosa di simile a quello che voleva fare American Dreamer lo trovate qui. La stessa libreria è installabile dal Gestore di librerie dell'IDE arduino.

Spesso qui viene chiesto come sostituire delay() con millis, lo mostro di seguito prendendo spunto da questo post di un utente: link

Non posto tutto il codice della macchina a stati che potete vedere qui

case 1:
      if (oneShotSwitch) {
          // se oneShotSwitch == true stampa "case 1"
          Serial.println("case 1");
      }
      break;
  case 'D':
      if (oneShotSwitch) {
          // se oneShotSwitch == true 
          gLed = 0;
          rLed = 0;
          bLed = 0;
          wtv020sd16p.playVoice(0);
      }

      //delay(73000); // commentato
      if (elapsedTime >= 73000) // questo codice non impegna la cpu in modo esclusivo per 73 secondi
          currentState = 'E';
      break;
  case 'E':
      wtv020sd16p.stopVoice();
      break;

Ciao.