Go Down

Topic: Creare un menù 4 pulsanti con OLED SSD1306 (Read 3798 times) previous topic - next topic

ziopippo

Oct 04, 2017, 10:37 pm Last Edit: Oct 05, 2017, 03:30 pm by ziopippo
Sono diversi giorni ormai che cerco invano su google una libreria con un esempio che mi permetta di creare un menù da visualizzare sul mio display comandato da 4 pulsanti.
Cosa mi consigliate?
Grazie

ziopippo

Nessuno che mi può dare qualche dritta?   :-[

ORSO2001

ciao,

non me ne intendo di questo display...ho trovato QUESTA libreria.
Certo è solo per i comandi "base"...che ti dovrai gestire nello sketch per crearti tu i menu...oppure...se pensi che userai spesso questo display per progetti diversi...creati tu una libreria che ti consenta di gestire vari menu...bella sfida per imparare.

ziopippo

Grazie per la risposta.
Il mio problema non è visualizzare i dati sul display. Per far questo ho trovato già diverse librerie più o meno complete.
Il mio problema è come creare i menù.
Ho trovato diversi sketch ma non riesco ad adattarli sulla oled.

ORSO2001

ciao,

allora, immaginando di avere 4 pulsanti (su, giù, conferma, esci), a seconda di quanti sotto menù vuoi gestire, userei una o più variabili da incrementare con i tasti su e giù per decidere/verificare in che menù sono e quindi cosa mostrare a display; altre variabili gestite dai pulsanti conferma ed esci per entrare ed uscire nel/dal menù selezionato.
Ovviamente ogni variazione delle suddette variabili implica una riscrittura, parziale o totale, del display.
Di solito io uso i classici LCD 16x2 o i 20x4 ed i miei menù li gestisco in questo modo.

ziopippo

Non avresti per caso qualche sketch di esempio da adattare?
Grazie

ORSO2001

ciao,

al momento posso allegarti un progettino su cui stavo lavorando tempo fa, messo temporaneamente in pausa, nel quale gestisco, in fase di setup, alcuni menu per impostazioni varie.
come vedi ci sono un po' di if e switch; se non ricordo male uso una sola variabile per fare i "salti" menù...cioè vario le decine per decidere i menù generici e le unità per i rispettivi sotto menù.
se può servirti...

brunello22

Mai provata, ma c'e' anche questa libreria Link
e il forum  link
e tra gli esempi c'è appunto anche l' SSD1306

Solo che una UNO non ha abbastanza memoria per gestire il tutto


ziopippo

Grazie proverò.

Mi sono accorto di non aver specificato quale sia il mio scopo del progetto.

Vorrei creare con una Wemos D1 mini un controllo con una sonda DS18B20 della temperatura di un acquario collegandoci un buzzer e e delle ventole di raffreddamento.
Per le ventole vorrei programmarle impostando io la teperatura di accensione e spegnimento e vorrei che un buzzer e dei led mi avvisano in caso di anomalia. Vorrei inoltre prevedere un tasto di snooze/quiet per azzittirlo a piacimento.
Se mi rimare memoria a sufficienza poi farò in modo di pubblicare i dati su Blynk o su Cayenne.


Ho optato per la Wemos in quanto un progetto simile ma meno completo (legge solo temperature e publica su blink) realizzato con una UNO ed un modulo WiFi va sempre in blocco. Visualizza i dati su LCD ma spesso bisogna resettarlo per avere i dati su blynk.
Grazie.

gpb01

#9
Oct 12, 2017, 10:30 am Last Edit: Oct 12, 2017, 11:53 am by gpb01
Ricordo sempre che questo è il forum di Arduino.cc dove si fornisce assistenza per problemi relativi a problematiche che coinvolgono Arduino, i suoi collegamenti e la sua programmazione.

Quindi, ben vengano domande che riguardano moduli ESP8266 collegati ad Arduino, ma domande per moduli che nulla hanno a che vedere con Arduino, prodotti da altri produttori che hanno semplicemente utilizzato/sfruttato l'IDE per sviluppare un loro "core" e facilitare la programmazione delle loro schede, come le schede WeMos, vanno poste sul forum di supporto delle WeMos.

Grazie.

Guglielmo

P.S.: Come vedete NON ho chiuso il thread, ma ... non esagerate eh ... ;)
Search is Your friend ... or I am Your enemy !

brunello22

Quote
Vorrei creare con una Wemos D1 mini un controllo.........
Sicuro di starci dentro, con il numero dei pin a disposizione ?

Oled SSD = 4 pin se SPI o 2 pin se I2C
Pulsanti per menu = 4 pin
DS18B20 = 1 pin
Buzzer = 1 pin
Ventola = 1 pin
Led = 1 pin
Tasto Snooze = 1 pin

ziopippo

Sicuro di starci dentro, con il numero dei pin a disposizione ?

Oled SSD = 4 pin se SPI o 2 pin se I2C
Pulsanti per menu = 4 pin
DS18B20 = 1 pin
Buzzer = 1 pin
Ventola = 1 pin
Led = 1 pin
Tasto Snooze = 1 pin

In teoria dovrebbero essere proprio tanti quanto me ne servono, considerando che per il tasto snooze avevo in mente di usare uno o tutt'e quattro di quelli del menu' e che l'oled voglio usarlo via I2C (ed è qui che incontravo anche diverse problematiche di programmazione).

ziopippo

P.S.: Come vedete NON ho chiuso il thread, ma ... non esagerate eh ... ;)
Ti ringrazio per aver lasciato aperto il post.
Avevo volutamente chiesto aiuto sul codice in generale senza menzionare la wemos (tra l'altro scelta da me SOLO per una questione di contenimento dei costi. Prendere una board con wifi è indubbiamente molto piu' onerosa.)

Spero di non aver contravvenuto nessuna regola del forum, se così fosse ti prego di eliminare prontamente questo mio intervento.  ;) 

ziopippo

#13
Oct 13, 2017, 11:04 am Last Edit: Oct 13, 2017, 11:08 am by ziopippo
Mai provata, ma c'e' anche questa libreria Link
e il forum  link
e tra gli esempi c'è appunto anche l' SSD1306

Solo che una UNO non ha abbastanza memoria per gestire il tutto


Ho provato la lbreria e gli esempi specifici dell'SSD1306 ma non riesco a cavarne un ragno dal buco in quanto il mio OLED non è della Adafruit e non riesco ad adattarlo.
Il mio è questo: LINK OLED

Sto anche provando la libreria MenuBackend seguendo il tutorial di coagula
link coagula
però anche modificando la riga 195 come da suo suggerimento non riesco a compilarlo. :(

nid69ita

#14
Oct 13, 2017, 11:21 am Last Edit: Oct 13, 2017, 11:29 am by nid69ita
Ho provato la lbreria e gli esempi specifici dell'SSD1306 ma non riesco a cavarne un ragno dal buco in quanto il mio OLED non è della Adafruit e non riesco ad adattarlo.
Il mio è questo: LINK OLED
Al link di coagula, il display è un semplice lcd testuale a 2 righe !?!

Ho un display simile e con le librerie SSD1306 funziona.
Però l'immagine e quello che dichiarano in quel link è BEN diverso.  Il display in foto usa protocollo I2C (Sda e Scl) mentre la descrizione è per un display SPI.     Quel display economico c'e' sia versione I2C che SPI. Quale hai ?
Se hai quello I2C verifica con lo sketch I2CScanner collegando il display qual'é l'indirizzo I2C.
Nella libreria Adafruit dentro a Adafruit_SSD1306.h viene fissato #define SSD1306_I2C_ADDRESS   0x3C
Se il display ha altro indirizzo DEVI modificare la libreria.
Inoltre sempre in quel file .h  viene fissato il tipo di display a 128x32, devi cambiare se il tuo è 128x64:
//   #define SSD1306_128_64
   #define SSD1306_128_32
//   #define SSD1306_96_16

P.S. per quel display c'e' anche la libreria https://github.com/olikraus/u8glib
che a me pare più leggera di quella di Adafruit.
my name is IGOR, not AIGOR

Go Up