Progetto azionamento servo ad ogni impulso

Ci sono anche molti altri errori di logica, di sintassi e ulteriori parentesi in eccesso.

Concordo su cominciare prima di tutto a indentare, se non si vuole fare a mano almeno usare la funzione formattazione automatica dell'IDE (CTRL+T).

NOTA:Secisonodubbisucosasialindentazionenepossia
moparlaremafondamentalmentelasuamancanzaèco
mescrivereinquestomodononsicapiscenien
teenonsitrovanoglierrori

Poi consiglierei di disegnare prima la logica su un foglio di carta (diagramma di flusso), e solo quando funziona provare a tradurla in istruzioni C. All'inizio è molto importante farsi uno schema mentale di corrispondenza tra sequenza di istruzioni e diagramma a blocchi, al punto che in molti corsi di programmazione si comincia prima a disegnare algoritmi solo su carta, scrivendosi anche il valore delle variabili in ogni momento. Poi con la pratica si riesce a scrivere direttamente le istruzioni, ma può comunque servire qualche diagramma generale dell'elaborazione o dei valori assunti dalle variabili in diverse situazioni.

Spesso la logica più semplice per descrivere il comportamento complessivo del programma è la stessa che useremmo in italiano per descrivere qualcosa da fare per noi, ad esempio questa (che è anche la più adatta quando si vuole usare millis per non bloccare il ciclo di loop con le delay):

quando sono in attesa:
    se pulsante premuto:
        annoto tempo attuale
        comando servo 90 gradi
        stato = pausa1

quando sono in pausa1:
    se scaduto il tempo:
        annoto tempo attuale
        comando servo 0 gradi
        stato = pausa2

quando sono in pausa2:
    se scaduto il tempo:
        stato = attesa