Go Down

Topic: MENWIZ: una libreria per creare menu su LCD (Read 31441 times) previous topic - next topic

brunialti

quello era il penultimo esempio codice, che non funzionava.
nell'ultimo codice (ultimo post del topic) non vedo quelle linee di codice e navmenu restituisce i codici Menwiz corretti (MW_BTU ecc...)

Ciao Ragazzi, ho avuto il tmepo per fare delle prove con il display e il menu, non avendo display I2C ho usato uno standard seriale che avevo, ma aimè non vedo nulla. La libreria non dovrebbe funzionare lo stesso ?  :smiley-eek-blue:

In questo sito: http://www.gioblu.com/community/forum/topic?id=542
viene usata la menwiz ma non cn il display i2c e mi da errore lo stesso. :(

Testato

spetta spetta ti stai incasinando

Quote
LCD_seriale != LCD_I2C != LCD_4bit


spero di essere stato chiaro  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

rioch87

#199
Jun 02, 2014, 12:45 pm Last Edit: Jun 03, 2014, 07:23 pm by leo72 Reason: 1
Salve ragazzi,
premetto che mi sto avvicinando da poco ad Arduino lasciando una lunga serie di progetti con i Pic, vi chiedo aiuto perchè sto dando di matto con la libreria MENWIZ.
Sto lavorando ad un progetto per il controllo automatico delle luci dell'acquario, ho seguito vari esempi, la guida della libreria e l'aiuto di un amico con un po più di esperienza ma non riesco a risolvere il problema.

Questo è parte dello sketch:
Code: [Select]
tree.begin(&lcd,16,2); //declare lcd object and screen size to menwiz lib
r=tree.addMenu(MW_ROOT,NULL,F("Menu"));
 s1=tree.addMenu(MW_SUBMENU,r, F("Data/Ora"));
     s2=tree.addMenu(MW_VAR,s1, F("Giorno"));
     s2->addVar(MW_AUTO_INT,&Giorno,1,31,1);
     s2=tree.addMenu(MW_VAR,s1, F("Mese"));
     s2->addVar(MW_AUTO_INT,&Mese,1,12,1);
     s2=tree.addMenu(MW_VAR,s1, F("Anno"));
     s2->addVar(MW_AUTO_INT,&Anno,1900,2050,1);
     s2=tree.addMenu(MW_VAR,s1, F("Ore"));
     s2->addVar(MW_AUTO_INT,&Ore,0,24,1);
     s2=tree.addMenu(MW_VAR,s1, F("Minuti"));
     s2->addVar(MW_AUTO_INT,&Minuti,0,60,1);
     s2=tree.addMenu(MW_VAR,s1, F("Secondi"));
     s2->addVar(MW_AUTO_INT,&Secondi,0,60,1);
     s2=tree.addMenu(MW_VAR,s1, F("Salva Dati"));
     s2->addVar(MW_ACTION,salvaora); //Richiamo alla funzione per aggiorare RTC
 tree.addUsrScreen(SchermataRiepilogo, 5000);


Il problema in se è che le voci "secondi" e "Salva Dati" non mi compaiono nel menù, è come se ci fossero troppe voci, infatti se commento per esempio "Giorni" e "mesi " le ultime due compaiono.
Avete una qualche idea di quale potrebbe essere il problema? Grazie in anticipo!

nid69ita

@rioch87
ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0
e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0
- qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0
- qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0
my name is IGOR, not AIGOR

brunialti

... e dopo esserti presentato controlla il valore di MAX_MENU in MENWIZ.cpp. Dovrebbe essere uguale a 8.
Incrementalo a 10 e poi dimmi.
Inoltre usa per il debug, dopo le chiamate a funzioni menwiz, anche la funzione getErrorMessage(true) e leggi sulla seriale se ti danno qualche errore DIVERSO DA ZERO
Inoltre: che scheda hai e quanta memoria libera (stampa il valore ritornato dalla funzione freeRam();)ti rimane dopo l'ultima istruzione di setup?

rioch87


... e dopo esserti presentato controlla il valore di MAX_MENU in MENWIZ.cpp. Dovrebbe essere uguale a 8.
Incrementalo a 10 e poi dimmi.
Inoltre usa per il debug, dopo le chiamate a funzioni menwiz, anche la funzione getErrorMessage(true) e leggi sulla seriale se ti danno qualche errore DIVERSO DA ZERO
Inoltre: che scheda hai e quanta memoria libera (stampa il valore ritornato dalla funzione freeRam();)ti rimane dopo l'ultima istruzione di setup?


Chiedo venia, mi sono appena presentato.
Ho dato un'occhiata alla libreria e aumentato i valori che mi hai segnalato. Sto utilizzando la board Arduino UNO infatti il problema più grave che mi ritrovo e proprio la ram. Il menù è più grande di quello che ho postato in precedenza e il programma non gira: noto sul display che scorrono tutte le voci del menù velocemente, in altri casi ili display rimane "pulito". Se commento 2 righe del menù il programma gira e rimangono liberi 168byte(?) di ram. Ho paura che la RAM non basti...  :~

brunialti

Si. Non ti basta. Usa i suggerimenti del capito 1.4 "how to save memory space" del manuale. Non risolve tutto ma ti da un po di respiro. Poi rivolgiti a una mega o al prossimo arduino 0.
Tra le compatibili con grandezza simile alla UNO io trovo ottima la Seeduino Mega (circa 30 euro).
c

rioch87


Si. Non ti basta. Usa i suggerimenti del capito 1.4 "how to save memory space" del manuale. Non risolve tutto ma ti da un po di respiro. Poi rivolgiti a una mega o al prossimo arduino 0.
Tra le compatibili con grandezza simile alla UNO io trovo ottima la Seeduino Mega (circa 30 euro).
c


Il problema è che la board la userei solo per sviluppo, il progetto finale avrà il suo circuito stampato con l'atmega programmato, quindi prendere una board con il chip SMD non mi aiuta. Grazie comunque, cercherò un'altra soluzione che impieghi meno ram.

Michele Menniti

Potresti usare comunque un smd e programmarlo direttamente sul pcb oppure passare al mega644 o 1284 in pdip programmandoli sempre su pcb o preventivamente su breadboard
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

vic_20

#206
Jun 12, 2014, 11:04 pm Last Edit: Jun 13, 2014, 09:39 am by vic_20 Reason: 1
Salve a tutti, ho provato questa libreria, e per creare la tastiera ho collegato i pulsanti con una resistenza da 10K verso massa, una subito dopo la resistenza verso il pulsante da 330verso arduino dando sull'altro capo del pulsante i +5v.
Il tastierino funziona correttamente, provandolo singolarmente, ma collegandolo per usarlo con la libreria sui pin
30 - 32 - 34 - 36 - 38 e 40 su una ardu/mega con display i2c, non funziona, sul display vedo correttamente il menu ma non posso muovermi con i pulsanti, che ho settato correttamente nell'programma quick_tour di esempio fornito.
Dove sbaglio, va forse modificata la libreria botton , devo cambiare il senso di alimentazione del tastierino??

se qualcuno puo darmi una dritta..........
grazie vic

#207
Jul 21, 2014, 10:11 pm Last Edit: Aug 04, 2014, 08:18 am by leo72 Reason: 1
Salve a tutti,
vorrei provare questa libreria. Ho provato a scaricarla e copiarla nella cartella librerie di Arduino insieme a Buttons e LiquidCrystal. Riavviato l'ide e provato a compilare i due esempi forniti. Riscontro però il seguente errore:


Code: [Select]
sketch_jul21a.ino: In function 'void setup()':
sketch_jul21a:79: error: 'class menwiz' has no member named 'navButtons'


Sembra non digerire:
Code: [Select]
 //declare navigation buttons (required)
 menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);


Infatti rimane scritta tutta in nero.

Come IDE ho provato la 1.04 e la 1.0.5

Sicuramente sbaglio qualche cosa visto che sembra un problema solo mio ma non riesco proprio a capire cosa.

Grazie per l'aiuto,
Mario

Ah... dimenticavo, la versione della libreria usata è la  1.3.2 mentre gli esempi li ho presi dalla 1.0.2.

Ho provato sia Quick_tour che Test_all_var_types e mi danno errore sempre sulla stessa istruzione, solo che una è:

tree.navButtons(.... );

mentre l'altra è

menu.navButtons(.....)

Ma il risultato rimane lo stesso...    'class menwiz' has no member named 'navButtons'


Grazie,
Mario

PaoloP

Non ricordo i nomi dei membri della classe, ma attento alle maiuscole e alle minuscole, il C è sensibile anche a questo aspetto.

Go Up