ti serve una struttura "switch-case"
https://www.arduino.cc/reference/en/...re/switchcase/ che rilevi le condizioni (i 2 stati dei finecorsa e lo stato del motore) e ne imponga di nuove, quando necessario e in accordo alla tua logica di funzionamento.
la struttura deve essere eseguita ciclicamente, o alla massima velocità nel ciclo while della funzione main(), oppure temporizzata agganciandola a un timer.
Switch-case richiede di funzionare con una sola variabile ma tu ne hai 3 e dovresti "impacchettarle" per ridurle a una (per gestire le tue condizioni ti servono 3 bit e qualsiasi variabile ne contiene minimo 8
) la soluzione più semplice, anche se molto meno elegante, è una struttura if-else annidata
https://www.arduino.cc/reference/en/...tructure/else/
esempio scritto in linguaggio "free"
if ((SW1==OFF) and (SW2==OFF) and (StatoMotore==SPENTO))
..{
....AccendiMotore();
....StatoMotore = ACCESO;
..}
else
..{
....if ((SW1==ON) and (SW2==ON) and (StatoMotore==ACCESO))
......{
........SpegniMotore();
........StatoMotore = SPENTO;
......}
..}
Per cosa ho capito delle tue specifiche, la tua seconda condizione "SW1=ON SW2=OFF -> Motore acceso" è ininfluente quindi non implementata, a meno che il motore non debba passare da spento ad acceso anche sul verificarsi di questa (sotto hai dettato una sola condizione per accendere il motore, e in elenco hai una sola condizione che lo spenga
)