Problema testo LCD

Salve sono nuovo nel mondo di Arduino quindi è inevitabile trovarmi dinanzi ad un problema che è il seguente.

Ho un Arduino mega su cui ho montato uno shield KA05, ho compilato lo sketch e direi che va abbastanza bene, inoltre ho collegato dei selettori in modo da simulare un sensore agli ingressi. Ho anche collegato il display lcd 16x2 standard trovato nel pacchetto ricevuto a casa; il mio scopo e quello di far stampare sul display lo stato del relè presente sullo shield KA05, nel momento in cui compilo lo sketch per un solo relè fila tutto liscio, il problema mi sorge quando compilo lo sketch per più relè.
Sul display mi appaiono tutti gli stati dei relè. Mentre io vorrei che mi apparisse uno stato alla volta o meglio all’abbassare della levetta del selettore_1 mi compare lo stato del relè_1 e via dicendo…
Se può essere di aiuto per capire meglio la mia situazione allego gli sketch.
Ringrazio in anticipo spero in una vostra risposta.
Cordiali saluti.

Completo_ka05.ino (1.29 KB)

KA05_con_LCD.ino (917 Bytes)

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Cross-posting proibito:
http://forum.arduino.cc/index.php?topic=311537.msg2159735#msg2159735

usa una serie di if-else if e solo sull'ultimo else metti la stampa di OFF

Già provato. Mi interessa più bloccare il ciclo, insomma, in altre parole deve apparire sul display solo il testo corrispondente alla pressione dei selettori...

se fai come dico io funziona :wink:

ho già provato ma non va e sempre la stessa cosa ho sempre lo stesso problema

Cosa dovrebbe succedere se attivi più di un ingresso?
Se ne attivi più di uno contemporaneamente (escluderei questa ipotesi, all'inizio) o se ne attivi uno mentre ne è già attivo un altro?
Se vuoi che venga indicato sempre e comunque solo il primo che è stato attivato e l'indicazione rimanga fino a quando rimane attivo, allora la soluzione è semplice.
Fai una serie di verifiche nel loop su tutti gli input.
Se l'input x è attivo, vai ad una funzione che ti indica sul display "x attivo" ed attende che venga disattivato, rimanendo dentro la funzione fino a quando è attivo, quando viene disattivato cancella il display e torna al loop.
L'inconveniente è che quando un input è attivo, il programma rimarrà bloccato senza poter fare altre operazioni fino alla sua disattivazione.
In alternativa, più efficacemente, puoi fare una macchina a stati.
Imposta una variabile stato = 0, che indica che nessun ingresso è attivo.
Quando l'ingresso x è attivo, poni la variabile stato = x.
Quando l'ingresso x viene disattivato, la poni stato = 0.
A questo punto puoi anche eseguire altre operazioni, senza mettere delay o altro che sia bloccante, basta che ad ogni loop verifichi se lo stato è cambiato (aggiungi un'altra variabile statoprecedente e confronti con stato) e se lo è scrivi sul display "Ingresso x attivo" se stato = x oppure "Nessuno" se stato = 0.

Io ho capito che lui vuole:
1 quando nessun tasto è premuto deve stampare OFF
2 quando un tasto è premuto viene stampato solo il nome del tasto premuto
3 quando si rilascia ritorna a stampare OFF.

Se è così ripeto che basta solo elseif

Ho risolto grazie a paulus1969...

RINGRAZIO TUTTI PER LA DISPONIOBILITA'

ci posti lo sketch giusto per capire quali erano le tue necessita' ?

Di solito quando si risolve, si mette [RISOLTO] nel titolo e si spiega come si è risolto, in modo che altri possano trarne spunto.