Ciao a tutti,
ho bisogno di una mano a scrivere una parte del mio codice.
vi spiego brevemente quello che voglio fare: ho tutto il mio progetto di un termostato, in una LCD visualizzo la temperatura letta, vorrei che tramite un pulsante quando lo tengo premuto venga cambiato ciò che visualizzo e appena lo rilascio ritorna a visualizzare la temperatura.
per il momento l'ho sistemato in questo modo:
però facendo in questo modo se lo tengo premuto un lungo ho dei problemi di riavvio della scheda.
qualcuno ha idea come possa sistemare le linee di codice sopra riportate?
Secondo me dovresti inserire un ritardo nel l'aggiornamento dell' LCD. Così com'è ora stai inondando l'lcd. Anzi ho notato ora che non stai facendo nessuna lettura quindi potresti stampare una sola volta.
@enrico03 ci sono moltissimi modi per fare quel che chiedi.
A titolo di esempio avevo un progetto tinkercad molto simile alla tua esigenza e l'ho modificato secondo le tue specifiche.
Il principio di funzionamento è quello di evitare del tutto algoritmi bloccanti (come il while) e chiamare le funzioni che aggiornano il display solo quando realmente necessario per evitare il fastidioso blink dell'LCD dovuto all'istruzione clear().
Dal vecchio progetto ho lasciato l'array di puntatori a funzione e commentato il pezzo di codice che incrementava l'indice dell'array alla pressione del pulsante.
Se preferisci ovviamente puoi chiamare direttamente le funzioni senza usare l'array (screensactualScreen; -> diventa screen1(); oppure screen2(); ), ma ovviamente avrai bisogno di un if oppure di uno switch/case per valutare il valore di actualScreen e agire di conseguenza.