menu LCD 20x4 con rotary encoder

Buongiorno a tutti,
vorrei poter creare un menu e sotto-menu utilizzando uno rotary switch encoder per muovermi nel suo interno.
potreste indicarmi qualche esempio da poter cominciare a studiare?

Le mi conoscenze fino ad ora mi hanno portato ad usare il display per visualizzare stati di variabili, I/O o di dati analogici come temperatura umidità.. volevo proseguire questa strada aggiungendo un tassello in più al mio progetto..

grazie confido in qualche vostra indicazione!

p.s. ho già acquistato un encoder di tipo KY-040 e la sua libreria

(http://www.ebay.com/itm/2PCS-KY-040-Rotary-Encoder-Module-Brick-Sensor-Development-For-Arduino-/400985436283)

Se guardi in megatopic c'è una libreria per creare menu...

Ma a te serve la libreria per creare i menu, o un modo per cambiarli usando un'encoder ?

Credo gli servano entrambe le cose... comunque la libreria può anche essere un ottimo punto di inizio anche per dare una sbirciatina al codice

Per la libreria non saprei, ma per il modo di cambiarli, credo sia sufficente un’interrupt su uno dei due pin dell’encoder, con due if nella ISR … ad esempio:

pinA → serve un’interrupt
pinB → normale ingresso digitale
contat → variabile da incrementare o decrementare, da usare come flag per dire allo sketch cosa mostrare (ad ogni valore corrispondera’ una diversa pagina del menu)

Poniamo per esempio che il valore minimo debba essere 0 ed il valore massimo 6 (un caso con 6 pagine da far cambiare con l’encoder) … cosi si puo usare il valore 0 per dire allo sketch di non mostrare nulla, e visualizzare o eliminare i menu semplicemente ruotando l’encoder (sara’ l’effetto del valore 0)

si aggancia una ISR “rising” (se i pin dell’encoder sono entrambi a LOW a riposo, altrimenti si inverte con “falling”) a pinA, dove all’interno si mette una cosa del genere, piu o meno:

if ((pinB = LOW) && (contat < 6))
{contat++;}
if (( pinB == HIGH) && (contat > 0))
{contat–;}

questo significa che se quando viene richiamata la ISR il secondo ingresso e’ ancora a LOW l’encoder sta girando in un senso (quindi se allo stesso tempo la variabile non e’ ancora arrivata al valore massimo, la incremento di uno ogni click) … mentre se in quel momento e’ gia a HIGH sta girando nell’altro (quindi se non e’ ancora a zero, la decremento di uno ogni click) … se serve che gli incrementi siano invertiti, si scambiano semplicemente i pin, oppure la logica, come si preferisce …

Poi nello sketch, in base al valore di quella variabile, si faranno diverse operazioni o si visualizzeranno diversi menu, magari inserendoli in chiamate o funzioni diverse …

(probabilmente ci sara’ anche un sistema migliore, ma per quello dovrete aspettare un programmatore :P)

Grazie per le segnalazione… sto leggendo in questi giorni la guida per creare un menu con la libreria MENWIZ… vedo che necessita pero di pulsanti per la navigazione e non sò saprei come modificarla per l utilizzo di un rotary encoder (mi manca ancora sicuramente esperienza per farlo…)
sono riuscito a trovare in rete qualcosa che si avvicina molto a quello che vorrei realizzare e vorrei postarvelo in allegato

il video e codice originale è in commento a questo video

sto cercatando di modificarlo per visualizzarlo in un display 4x20… credete sia un buon inizio?

lcd_menu1.ino (10.6 KB)

**>n3v3r: **in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito ... il tuo post, relativo a questo identico argomento, nel thread della MENWIZ è stato quindi rimosso.

Guglielmo

Recepito il messaggio chiedo scusa Guglielmo!

Comunque, se fai una ricerca qui sul forum, ricordo che alcuni mesi fa qualcuno aveva lo stesso problema, usare un “rotary encode” per gestire un menu (… o era scorre delle pagine, non ricordo bene) … vedi un po’ se lo trovi … ::slight_smile:

Guglielmo

Accedenti è esattamente ciò che avevo in mente in questi giorni, un display 20x4 e un encoder rotativo… Farò anche io una ricerca all’interno del forum… La trovo una gestione degli input molto più comoda rispetto all’utilizzo di tasti, nonostante questo effettivamente la vedo usata molto poco. Appena arriveranno gli encoder che ho ordinato online mi metterò al lavoro anche io e se otterrò qualche risultato lo posterò qui!!