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.