Vorrei realizzare un simulatore di guida, ma mi manca un lampo di genio

Pegasus:
Grazie a tutti e due...ultima domanda scema:
Il delay dove lo inserisco?

if (stateButton1 == HIGH) {

if(stateout1 == false) {    
     digitalWrite(out1, HIGH);
     stateout1 = true;  
   }
   else {
     digitalWrite(out1, LOW);
     stateout1 = false;
    delay(250);
   }




così?
Grazie di nuovo

riguardando il terzo post (quello dove spieghi a "parole tue" quello che deve fare il programma mi sembra che quello che ti hanno postato è un pò differente da quello che vuoi...questo (togliendo il delay che hai messo) accende "out1" quando premi il bottone e lo fa rimanere acceso finche non lo premi di nuovo...se è questo quello che ti serve allora il codice secondo me funziona così com'è (forse da aggiungere un piccolissimo delay proprio prima della fine del loop giusto per non far impazzire il micro andando troppo veloce)
se invece a te serve che dopo aver premuto il pulsante "out1" rimanga acceso per 1 secondo (per esempio) e poi si spenga da solo allora quel programma va modificato un pò in questo modo:

if (stateButton1 == HIGH) {
     digitalWrite(out1, HIGH);
      delay(1000);
      digitalWrite(out1, LOW); 
    }

questo è più simile a quello che avevi accennato nel terzo post.

devo però avvertirti che i delay "bloccano" l'esecuzione del programma...cioè quando il micro incontra un delay fa dei cicli a vuoto per "perdere" tempo fino a che non passa 1 secondo (in questo caso) quindi diciamo puoi fare una cosa alla volta non di più...per esempio non puoi accendere la spia della cintura e quella dell'olio in contemporanea (giusto per dire due spie a caso)

se ti serve invece che il micro faccia più cose contemporaneamente devi guardare questo esempio BlinkWithoutDelay
oppure le 2 librerie di leo72: leOS o looper