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