Pilotare elettrovalvole Arduino

La logica è esattamente come la si descriverebbe in italiano:

Quando sono in attesa (ONIDLE)
    se comando attivo -> avvia gonfiaggio -> INFLATE
    
Quando sto gonfiando (INFLATE)
    se pressione massima -> ferma gonfiaggio e
                            annota tempo attuale -> PAUSE

Quando sono in pausa (PAUSE)
    se trascorsi N secondi -> avvia sgonfiaggio -> DEFLATE
    altrimenti se pressione bassa -> avvia gonfiaggio -> REFILL

Quando sto rabboccando (REFILL)
    se trascorsi N secondi -> avvia sgonfiaggio -> DEFLATE
    altrimenti se pressione massima -> ferma gonfiaggio -> PAUSE

Quando sto sgonfiando (DEFLATE)
    se pressione minima -> ferma sgonfiaggio -> WAIT_NO_COMMAND

Quando sto attendendo nessun comando (WAIT_NO_COMMAND)
    se comando disattivo -> ONIDLE

Poi questa è una logica di partenza, su un sistema reale io vorrei poter interrompere il processo in qualsiasi momento, e far fronte ai guasti della sonda pressione (ad esempio aggiungendo dei timeout). Ma queste modifiche sono solo altre semplici righe descrittive da aggiungere ai "quando" (gli stati/situazioni), o altre situazioni, ad esempio uno stato ERROR.