Sensore di pressione analogico

torn24:
Io passo a un case "uno stato della macchina a stati finiti" per eseguire una cosa, se mi trovo ad eseguire "else if()" cambio stato per cui non posso fare più la prima cosa!
Esempio il primo if() deve attendere un intervallo di tempo per eseguire qualcosa, se viene eseguito l'else if
cambio stato, per cui dopo trascorso l'intervallo di tempo non succede niente. Si risolve con più stati, io ho tanti case ognuno per ogni azione diversa che devo eseguire.

Più o meno. In uno stato si possono aspettare più eventi. Se questi richiedono un cambio di stato (e quasi sempre è così) allora la loro gestione deve anche essere mutuamente esclusiva (else if). Se sono veri tutti ha la priorità il primo testato.

Per il discorso dell'intervallo di tempo, nella logica è previsto di iniziare a misurarlo quando viene raggiunta la pressione massima, e di controllarlo sia nello stato 'pausa' che 'rabbocca', per cui non ci si perde mai il timeout (chiaro che se la logica viene alterata con modifiche più o meno a tentativi si sballa tutto).

Poi come già detto in precedenza, la pressione tanto vale leggerla una sola volta prima dello switch. In effetti c'è anche molto altro codice duplicato che potrebbe essere compattato in singole funzioncine, ma qui dipende anche se zio vuole usare delle funzioni o scrivere tutto assieme nel loop.