Arduino Forum

International => Italiano => Megatopic => Topic started by: brunialti on Jul 23, 2012, 09:41 am

Title: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jul 23, 2012, 09:41 am
EDIT 10/03/2014 in allegato ultima versione *beta* di MENWIZ la 1.3.2 BETA con le nuove funzioni per variabili text editabili e possibilità di definire utenti e mascherare i menu. La versione definitiva sarà messa come sempre su  github.com/brunialti/MENWIZ. In teoria è completa e funzionante... provare per credere... :-)

Ho da un po di tempo inserito un topic nella sezione in lingua inglese sulla libreria che ho sviluppato.
Spero di fare cosa utile segnalando la libreria anche qui.

Le caratteristiche della libreria sono:


In allegato una introduzione (in inglese...) alla libreria:

La libreria è disponibile a:
https://github.com/brunialti/MENWIZ_1_3_2

Il thread in inglese è:
http://arduino.cc/forum/index.php/topic,99693.msg866553.html#new

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: menniti on Jul 23, 2012, 10:20 am
azz, pensavo che avevi fatto una libreria su di me :smiley-eek: :D
Comunque complimenti, mi sembra molto interessante, la metto in scaletta ;)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jul 23, 2012, 10:22 am
Quella su di te è in lavorazione ... :-)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: menniti on Jul 23, 2012, 10:23 am

Quella su di te è in lavorazione ... :-)

speriamo bene :smiley-sweat:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: alexdb on Jul 23, 2012, 11:26 am
Complimenti! molto interessante...:)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jul 23, 2012, 03:45 pm
Se siete interessati, usatela e fatemi sapere.
Suggerimenti bene accetti.


p.s. in realtà mi sono accorto che nelle funzioni di salvataggio in eeprom mi sono dimenticato di inserire il tipo dati MW_LIST (Menu con scelta tra opzioni multiple). Lo inserirò nella prossima versione.
Title: Bug fixing
Post by: brunialti on Jul 24, 2012, 10:40 am
Ho corretto un paio di bugs nella versione 0.6.1:
- caratteri spuri su lcd
- scrittura/lettura su EEPROM ora salva anche lo stato della variabile MW_LIST (lista di opzioni)

Chi è interessato a testare la version 1.0 (versione per me definitiva, almeno per un po di tempo) con utilizzo della memoria Flash per le variabili stringa?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Jul 25, 2012, 06:58 pm
debbo testarla per contratto  :)

purtroppo non so quando, appena ho un po di tempo la butto su.

complimenti per l'idea  :)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jul 25, 2012, 07:07 pm
Tel chi la 1.0 beta
con manuale e tutto.
Attendo feedback.

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Jul 26, 2012, 07:15 pm
Molto interessante, la proverò.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jul 27, 2012, 08:29 am
Manuale beta 1.0 aggiornato. C'erano alcuni errori segnalati dalla community in inglese che potrebbero portare ad errori.
Title: MENWIZ 1.0.0
Post by: brunialti on Jul 29, 2012, 07:31 pm
Ho messo su Github la versione 1.0:
https://github.com/brunialti/MENWIZ/downloads

Le novità sono:



Il manuale è stato aggiornato, ma se notate incongruenze ed errori vi prego di segnalarmelo, così come in caso di bugs ....
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 01:23 pm
Eliminati nella versione 1.0.1. alcuni bug segnalati dalla community di utenti menwiz del forum in inglese.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 01, 2012, 03:36 pm
Ciao e complimenti in anticipo per la condivisione del tuo lavoro.

Un piccolo appunto. Rivedi la struttura delle cartelle all'interno del pacchetto che l'utente scarica, inserendo la libreria in una cartella pronta per essere copiata in /libraries e separando i file che non sono strettamente necessari, vedi il PDF, da essa.

Magari infila dentro a /libraries anche le altre 2 cartelle delle librerie accessorie.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 01, 2012, 03:42 pm
PS:
un'altra cosa.
L'esempio contenuto in Test_ecc.... non ha il nome .ino coerente con quello della cartella che lo contiene (si riferisce ad una versione precedente, immagino) per cui l'IDE non lo carica.

La lib non l'ho testata perché non ho al momento display da usare.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 03:42 pm
mi sembra un buon suggerimento.
Per evitare di essere accusato di spamming ... :-) lo faccio la prossima release.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 03:59 pm
nel file zip ho risistemato i file come suggerito da Leo72

https://github.com/brunialti/MENWIZ/downloads
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 01, 2012, 04:03 pm
Sei sicuro? Io ho trovato lo stesso zip  :smiley-sweat:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 04:06 pm
nome uguale struttura diversa. Ho provato a scaricarlo per controllare...Oddio si vede di tutto in linea ... :-)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 01, 2012, 04:08 pm
No, mi spiace. Io trovo ancora tutto come prima.
Te lo allego, ha la fine con (3) perché l'ho scaricato più volte  :smiley-yell:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 04:11 pm
non quadra neanche con le dimensioni. io vedo quello della immagine in allegato.
potrebbe essere un problema di cache. fai il refresh

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Madwriter on Aug 01, 2012, 04:14 pm

non quadra neanche con le dimensioni. io vedo quello della immagine in allegato.
potrebbe essere un problema di cache. fai il refresh



guarda anche io vedo la stessa disposizione di prima  :smiley-fat:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 01, 2012, 04:16 pm
E' mezz'ora che refresho  :smiley-yell:

@bruno:
forse tu vedi i nuovi file perché sei il possessore dell'account. Magari github necessita di un po' di tempo per aggiornare i file? Non so, sto sparando a caso
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 04:16 pm
uhmmm potrebbe essere un problema di apply change di git. magari hanno un daemon temporizzato, almeno per i file

p.s meno male che refreshi. qui  fa un caldo becco....
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 01, 2012, 04:38 pm
mah... continuo a caricare il nuovo, ma effettivamente vedo anche io il vecchio...
In allegato...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 01, 2012, 08:20 pm
Così è quasi a posto, toglierei solo il PDF dall'interno della cartella /libraries/MENWIZ e lo metterei nella cartella radice, insieme al file Readme.

Rinnovo i complimenti per la condivisione del lavoro e per la documentazione: il Pdf è veramente "professionale"  ;)
Title: Uso di addUsrNav
Post by: brunialti on Aug 10, 2012, 11:13 am
il metodo addUsrNav attualmente rimpiazza il modello built in che prevede l'uso di 6 bottoni.
la prossima release di MENWIZ permetterà di definire esplicitamente se si vuole il modello a 4 o a 6 bottoni.
Per il momento *se* si usa addUsrNav si può patchare nel modo seguente:

extern byte MW_navbtn;
...
// in setup() subito dopo la chiamata ad addusrNav
MW_navbtn=4;  // force 4 buttons mode
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Madwriter on Sep 21, 2012, 12:27 pm
una domanda,funziona su qualsiasi lcd?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 21, 2012, 12:45 pm
su tutte quelle supportate dall nuova libreria LiquidCrystal:
  The New LiquidCrystal allows to use 4 wires, 8 wires, I2C,
  serial and other LCDs. The use of New LiquidCrystal is beyond this
  introduction


vedi anche https://github.com/brunialti/MENWIZ/downloads
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Madwriter on Sep 21, 2012, 01:06 pm

su tutte quelle supportate dall nuova libreria LiquidCrystal:
  The New LiquidCrystal allows to use 4 wires, 8 wires, I2C,
  serial and other LCDs. The use of New LiquidCrystal is beyond this
  introduction


vedi anche https://github.com/brunialti/MENWIZ/downloads


Grazie mille fra 7 gg mi arriva il display e ti stresso un pò la libreria ;)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 21, 2012, 01:18 pm
bene!
ma prima di stressare me  :) guarda anche

http://arduino.cc/forum/index.php/topic,99693.0.html

attebdo feedback
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Sep 21, 2012, 11:23 pm
Hai mica fatto, tu o altri, un video di esempio ?

Per il discorso i2c quale chip supporta la lib ?
Ad esempio del chip in firma e' stato necessario fare una libreria apposita

P.s mi farebbe piacere un tuo parere su questo mio topic, grazie
http://arduino.cc/forum/index.php/topic,122904.msg924268.html#msg924268
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: dasty on Sep 25, 2012, 01:00 pm
ciao brunialti

sono appena venuto a conoscenza del lavoro che hai fatto, io ho appena ultimato la libreria per:
monitor LCD I2C: Robot-Electronics dove ho pure collegato il tastierino annesso,

volevo chiederti se potevamo collaborare per inserire questa libreria nella tua in modo da renderla conpatibile anche con il monitor in mio possesso.

fammi sapere
Title: Ultima versione di MENWIZ
Post by: brunialti on Dec 20, 2012, 10:31 am
Ho inserito su github l'ultima versione di MENWIZ

https://github.com/brunialti/MENWIZ
(https://github.com/brunialti/MENWIZ)
Potete scaricare il tutto come file zip.

La libreria ha dimensioni minori e alcune nuove funzioni di visualizzazione dei menu (collapsed menu).
Ha avuto un certo numero di download (oltre 300), anche se ora dopo la modifica della interfaccia di githib (non c'è più la pagina downloads) non so bene come fare a sapere quante persone scaricano i file ...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 17, 2013, 12:14 am
Ho un dubbio, il mio menu funziona, benissimo, solo che non sono riuscito a metterlo in azione, ovvero
in s2->addVar definisco i limiti e lo step da effettuare, e fino a qui tutto ok, sul mio display appaiono i limiti e con i pulsanti setto il valore che voglio.  Dopodichè schiaccio il pulsante confirm e mi torna indietro ...  


Code: [Select]

r=menu.addMenu(MW_ROOT,NULL,F("MAIN MENU"));                      //create a root menu at first (required)

 //---------------  
 s1=menu.addMenu(MW_SUBMENU,r,F("SAW"));                       //add a submenu node 1 to the root menu (control the heigh of my Saw)
   s2=menu.addMenu(MW_VAR,s1,F("ABS Height"));                   //add a terminal node in the menu tree (that is "variable"); (move at a certain mm height)
      s2->addVar(MW_AUTO_INT,&sp,0,100,1);                   //int type, fd binded variable, rage 0-100, step 1


ora il mio dubbio è: come faccio a fargli eseguire il comando ? ovvero far compiere allo stepper i passi richiesti ? devo scrivere una funzione tipo questa?

Code: [Select]

void ABS Height()
{
Serial.println("Sto girando zzz 10giri zzzz "); // :-)
}

Grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 17, 2013, 12:35 am
.... direi di no ... ma non capisco come faccio a eseguire la variabile scitta
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jan 17, 2013, 01:26 pm
Non so se capisco bene. Nel menu devi settare i valori di alcune variabili, quindi devi lanciare una azione con i valori impostati.
Se è così devi creare una funzione di tipo int, quindi un nuovo nodo del menu di tipo variabile MW_ACTION, nel quale dichiari la tua azione che verrà eseguita ogni volta che premi il tasto di conferma e userà i valori correnti delle variabili modificati tramite il menu.
Non capisco coesa imntendi per "eseguire la variabile"
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leouz on Jan 17, 2013, 04:57 pm
qualcuno ha già gestito i pulsanti tramite Io expander i2c? magari postando il codice?  :smiley-sweat:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 17, 2013, 05:39 pm
Ciao Roberto,
Si è come dici, qundi dopo:
Code: [Select]

s1=menu.addMenu(MW_SUBMENU,r,F("SAW"));                       //add a submenu node 1 to the root menu (control the heigh of my Saw)
   s2=menu.addMenu(MW_VAR,s1,F("ABS Height"));                   //add a terminal node in the menu tree (that is "variable"); (move at a certain mm height)
      s2->addVar(MW_AUTO_INT,&sp,0,100,1);                   //int type, fd binded variable, rage 0-100, step 1

devo mettere
Code: [Select]
s2->addVar(MW_ACTION,step);
per step intendo il movimento di un motore di n giri che ho settato  nel menu comandato dalla riga sopra ? (non sono sicuro che sia step ... magari è dostep ... poi controllo)
e "ovviamente" devo definire:
Code: [Select]
int step
e poi
Code: [Select]
void step ()
//funzione matematica che mi farà fare tanti giri o eventualmente mm

per eseguire variabile intendo esattamente quello che hai detto "userà i valori correnti delle variabili modificati tramite il menu"
Scusa se faccio 'ste domande, ma da pricipiante a volte anche se ho le risposte sotto gli occhi ... non le vedo. Ho letto il tuo manuale e cercato di osservare codici di altri .... ma è ancora dura.
Grazie
P.S.
Se hai bisogno di fare qualche taglio con CNC ricambio volentieri
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jan 17, 2013, 06:02 pm
devi mettere queste due righe (la prima crea un novo nodo nel menu, sotto il nodo puntato da s1, la seconda dice che quel nodo è una azione)

Code: [Select]
s2=menu.AddMenu(MW_VAR,s1,F("Step"));
s2->addVar(MW_ACTION,step);

In questo caso quando premi il tasto conferma sulla label "Step" entri in una schermata che ti chiede conferma.
Se non vuoi la conferma (cioè vuoi lanciare la funzione step appena premi il tasto di conferma) allora devi aggiungere
Code: [Select]

s2->setBehaviour(MW_ACTION_CONFIRM,false);

Non mi tentare con il CNC. Potresti non liberarti di me ...  8)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jan 17, 2013, 06:14 pm
@dasty
scusami, ma non avevo visto la tua proposta. menwiz può essere anche fatto funzionare con altre librerie di gestione lcd oltre new liquidcrystal.
Alcuni utenti lo hanno fatto. E' relativamente semplice se la libreria alternativa ha una interfaccia con funzioni simili.
Ma io non riesco proprio a mantenere più versioni per più librerie. new liquidcrystal è quella che comprende più interfacce di tutte ed è la più performante e stabile.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 17, 2013, 08:08 pm
Grazie Roberto,
Ora comincio a capire un pochino

Quote
Non mi tentare con il CNC. Potresti non liberarti di me ...  smiley-cool


Ho un bel giocattolino autocostruito .... bhè mica tanto giocattolo ... 2,60 metri x 1,80 circa ....
cercando su google Mechmate ti puoi rendere conto
fai un pò te ...  :)
a me piace sdebitarmi
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 18, 2013, 01:23 pm
Ciao Roberto,
Macchè evidentemente non ho capito, non mi funziona. Aggiungendo:
Code: [Select]
     s2=menu.addMenu(MW_VAR,s1,F("Step"));
come nel codice sotto, quello che accade è che mi viene aggiunto un altro menu "Step" alla root principale.
Ho provato ha cambiare s2 in s3 sopra e relativa aggiunta *s3 all'inizio sotto ma nisba

Code: [Select]
 _menu *r,*s1,*s2;

                                     // initialize the menu object ( 4 x rows x 20 colums LCD)
 menu.begin(&lcd,16,2);              //initialize the menwiz menu object passing the lcd object and the colums and rows params
 menu.addUsrNav(navMenu,4);
 MW_navbtn=4;                        // force 4 or 6 buttons mode for menu navigation -> MW_navbtn=4; or MW_navbtn=6;

 //create the menu tree
 r=menu.addMenu(MW_ROOT,NULL,F("MAIN MENU"));                      //create a root menu at first (required)

 //---------------  
 s1=menu.addMenu(MW_SUBMENU,r,F("SAW"));                       //add a submenu node 1 to the root menu (control the heigh of my Saw)
 s2=menu.addMenu(MW_VAR,s1,F("ABS Height"));                   //add a terminal node in the menu tree (that is "variable"); (move at a certain mm height)
    s2->addVar(MW_AUTO_INT,&sp,0,100,1);                   //int type, fd binded variable, rage 0-100, step 1
     s2=menu.addMenu(MW_VAR,s1,F("Step"));
       s2->addVar(MW_ACTION,Step);


invece
Code: [Select]
       s2->addVar(MW_ACTION,Step);
mi blocca il codice su Step perchè non dichiarato .... ma questo è un altro discorso legato alla mia incapacità .... ci devo studiare un po' (ho provato a smanettare ma peggioro la situazione)
Comunque quello che mi sembrava aver capito è che una volta impostata la mia variabile
Code: [Select]
    s2->addVar(MW_AUTO_INT,&sp,0,100,1);
ad esempio 10 ... premendo confirm passavo al livello successivo "Step" e confermando di nuovo eseguivo l'azione step con valore 10 impostato al livello precedente ... sbaglio ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jan 19, 2013, 04:59 pm
ehm, aggiungere una linea al menu, è quello che volevo (ma forse tu no   :~)
Ovviamente devi creare una funzione Step dove metetreai il tuo codice per evitare l'errore in compilazione sulla linea 

Code: [Select]
s2->addVar(MW_ACTION,Step);

quindi scrivi qualcosa di simile


Code: [Select]
int Step(){
//....
}


Quando sei nel menu definito da:

Code: [Select]
   s2->addVar(MW_AUTO_INT,&sp,0,100,1);


puoi cambiare il valore della variabile sp, ma per lanciare l'azione (menu "Step") devi ritornare indietro di un livello perchè sia il menù con la tua variabile sia il menu "Step" sono 'figli dello stesso padre' (il menu root puntato da r1).
Però puoi anche provare a usare l'opzione collapsed menu, che forse fa quello che vuoi tu:

Code: [Select]
_menu *r,*s1,*s2;

                                     // initialize the menu object ( 4 x rows x 20 colums LCD)
 menu.begin(&lcd,16,2);              //initialize the menwiz menu object passing the lcd object and the colums and rows params
 menu.addUsrNav(navMenu,4);
 MW_navbtn=4;                        // force 4 or 6 buttons mode for menu navigation -> MW_navbtn=4; or MW_navbtn=6;

 //create the menu tree
 r=menu.addMenu(MW_ROOT,NULL,F("MAIN MENU"));   //create a root menu at first (required)

 //---------------  
 s1=menu.addMenu(MW_SUBMENU,r,F("SAW"));            //add a submenu node 1 to the root menu (control the heigh of my Saw)
    s1->setBehaviour(MW_MENU_COLLAPSED,true);        // fa vedere tutte le opzioni di submenu in una stessa schermata

    s2=menu.addMenu(MW_VAR,s1,F("ABS Height"));      //add a terminal node in the menu tree (that is "variable"); (move at a certain mm height)
    s2->addVar(MW_AUTO_INT,&sp,0,100,1);                /int type, fd binded variable, rage 0-100, step 1
   
    s2=menu.addMenu(MW_VAR,s1,F("Step"));
    s2->addVar(MW_ACTION,Step);
    s2->setBehaviour(MW_ACTION_CONFIRM,false);


L'opzione MW_MENU_COLLAPSED funziona però solo con 6 buttons (perchè altrimenti non saprei come gestire l'interazione con l'utente).
Il codice di cui sopra dovrebbe fare quello che vuoi (vedere nella stessa schermata la variabile  e l'azione, poter modificare con il tasto destro/sinistro il valore della variabile e lanciare direttamente l'azione dalla stessa schermata). Ovviamente il codice di cui sopra pur girando su un lcd 2x16 è indicato su un lcd 4x20.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 19, 2013, 06:26 pm
Grazie Roberto,
Devo Ragionarci un pò su e fare mente locale, mi ero entusiasmato quando il menù ha cominciato a funzionare con i pulsanti analogici dello shield, ora ho un momento di regressione, troppe cose insieme ! ed ho scoperto che il driver stepper che avevo ordinato non è adatto al motore che ho, quindi devo attendere quello nuovo per sperimentare (ho ordinato anche il 4x20)
I punti fermi sono 4 (massimo 5) pulsanti analogici, quelli dello shield.
In alternativa far fuzionare il menù e il progetto con un encoder rotativo mi attrae molto.
I 6 pulsanti digitali sono  esclusi (mi mangiano troppi pin) e con loro la funzione collapsed (anche se combinando encoder e pulsanti ...).
Comunque un passo alla volta altrimenti collasso io !
Quello che vorrei fare pensavo fosse semplice:
Code: [Select]
Menu:
  Sega>
        Altezza Assoluta>             //porta la lama a X mm
              Movimento mm (0) 20 (100)> //min,X,Max (X=20mm)
                          OK esegui spostamento
       Altezza Relativa>             //sposta la lama di X mm
              Movimento mm (0) 40 (100)> //min,X,Max (X=40mm)
                          OK esegui spostamento
  Pialla>    //concetto simile alla sega
        Altezza Assoluta>
              Movimento mm (0) 20 (100)>
                          OK esegui spostamento
ecc. ecc.

Tenere i "figli" separati è essenziale.
Ora con le ultime informazioni che mi hai dato vedo cosa riesco a fare per non incasinare tutto.
Secondo me , visto che devo tornare indietro dopo aver messo i mm di spostamento per poi far partire l'azione, potrei creare dei "nipoti", cioè: Sega è padre, Altezza Assoluta/Altezza Relativa Figli, e Movimento mm e OK esecuzione nipoti. Così rimarrei tornando indietro, nel menù Altezza Assoluta e non in mezzo al resto ... vediamo un pò cosa riesco a combinare.
Grazie e buona domenica.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Silverdog63 on Jan 27, 2013, 10:01 pm
Allora, mi è arrivato il display LCD da 20x4 WOW ! bellisimo ! ... e ho potuto progredire nel progetto.
Ecco cosa ho combinato:
Code: [Select]
 //------ Sega Squadratrice ---------
s1=menu.addMenu(MW_SUBMENU,r,F("SAW"));                    //add a submenu node 2 to the root menu (control the heigh of my Planner)
 s2=menu.addMenu(MW_SUBMENU,s1,F("Altezza Sega"));                         //add a terminal node in the menu tree (that is "variable"); (should move at a certain mm height)
   s3=menu.addMenu(MW_VAR,s2,F("Altezza Assoluta"));
     s3->addVar(MW_AUTO_INT,&Height2,0,100,1);     //int type, fd binded variable, rage 0-100, step 1
       s3=menu.addMenu(MW_VAR,s2,F("moveMOTOR2"));
       s3->addVar(MW_ACTION,moveMOTOR2);
 s2=menu.addMenu(MW_SUBMENU,s1,F("Spostamento Sega"));                         //add a terminal node in the menu tree (that is "variable"); (should move at a certain mm height)
   s3=menu.addMenu(MW_VAR,s2,F("Movimento Relativo"));
    s3->addVar(MW_AUTO_INT,&Height1,-100,100,1);                   //int type, fd binded variable, rage 0-100, step 1
       s3=menu.addMenu(MW_VAR,s2,F("moveMOTOR"));
       s3->addVar(MW_ACTION,moveMOTOR);
 s2=menu.addMenu(MW_VAR,s1,F("Zero"));                         //add a terminal node in the menu tree (that is "variable"); (should set the zero)
 s2=menu.addMenu(MW_VAR,s1,F("Setup"));                        //add a terminal node in the menu tree (that is "variable");  (set the parameters)

 
 //------- Pialla --------
s1=menu.addMenu(MW_SUBMENU,r,F("PLANNER"));                    //add a submenu node 2 to the root menu (control the heigh of my Planner)
 //------- Toupie --------
 s1=menu.addMenu(MW_SUBMENU,r,F("Toupie"));                    //add a submenu node 2 to the root menu (control the heigh of my Planner)

E queste sono le funzioni (provvisorie) chiamate:
Code: [Select]

void moveMOTOR(){
stepper1.moveTo(Height1 * 50); // move Height1 mm's
lcd.print ("Sposto di ");
lcd.print (Height1);
lcd.print (" mm");
delay (5000);
}

void moveMOTOR2(){
stepper1.moveTo(Height2 * 50); // move Height1 mm's
lcd.print ("Altezza Segaa: mm ");
lcd.print (Height2);
delay (5000);
}

In pratica ora il menu fa esattamente quello che volevo (bhè è da finire un poco e da mettere in ordine)
Però ora le funzioni vengono chiamate internamente al ramo scelto, ovvero:
Menu Principale.
  SAW > Altezza Sega > Altezza Assoluta > Variabile 0 (X) 100
                                                      > Esecuzione
        > Spostamento sega > Movimento Relativo > Variabile -100 (X) +100
                                                                 > Esecuzione
E oltretutto riesco anche a far vedere ciò che succede dul display:
Code: [Select]
lcd.print ("Sposto di ");
lcd.print (Height1);
lcd.print (" mm");

ovvero mi appare sul LCD "Sposto di X mm""
Fantastico !
Grazie !
Penso che con il menù ho quasi fatto ... ora devo lavorare sul motore passo passo e le relative funzioni.
Ciao
P.S. allego lo sketch completo.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: mdoc on Feb 04, 2013, 09:06 pm
Ciao,
ho provato la libreria per i menù di un controller di un acquario che sto realizzando.
Grazie per il magnifico lavoro che hai fatto.
Molto semplice da usare anche per me che conosco solo le basi del linguaggio C (e neanche bene).
A me sono state molto utili anche le opzioni di salvataggio in eprom e la possibilità di usare un altra "funzione" per la gestione dei pulsanti.
Ciao
Marco
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: baghyyy on Mar 14, 2013, 01:20 pm
Ciao Brunialti bel lavoro, senti per caso mi potresti aiutare ad adattare questa libreria per l' IDE 23, poiche ho scritto già un pde in quella versione e mi verrebbe più semplice adattare la tua alla 23 che il mio pde con tutte le librerie incluse alla 1.0
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Apr 28, 2013, 11:19 pm
grazie al lavoro di Alessandro Raffaele che ha tradotto il manuale della libreria chi è interessato lo può prendere dall'allegato.
Purtroppo non sono riuscito a verificarlo, ma sono convinto che è perfetto :-)
Grazie Alessandro
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Apr 29, 2013, 05:50 am
Grazie del manuale, credo sia meglio un PDF, questo DOC non si apre sul mio tablet
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Apr 29, 2013, 07:24 am
Aprendolo su Linux da LibreOffice mi trovo un documento di più di 400 pagine di caratteri senza senso e pagine vuote.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Apr 29, 2013, 07:29 am
@Leo : L'ho convertito in pdf ma ... NON riesco ad allegarlo ... il forum mi corrompe l'Attach sia se lo metto come pdf, sia se lo racchiudo in uno zip ... :( :( :(

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Apr 29, 2013, 07:32 am
Il forum ha dei problemi con gli allegati da diversi giorni, pare proprio nel gestire ZIP e PDF, che vengono allegati ma poi salvati in remoto in forma corrotta.

Prova a comprimere il file in un formato tipo RAR oppure TAR.GZ, per vedere se cambia qualcosa.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Apr 29, 2013, 07:34 am
... eccolo in RAR ... vediamo ...

Guglielmo

Edit : Sembra che in RAR vada bene ;)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Apr 29, 2013, 09:11 am
Io ho scaricato con Chrome ma il rar mi risulta corrotto
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Apr 29, 2013, 10:25 am
Aprendo l'archivio mi viene detto che il file è corrotto però me lo estrae e poi il PDF è giusto  :smiley-eek:
Uso Linux con Chromium.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Apr 29, 2013, 11:01 am
... a questo ho aggiunto anche una parte di "recovery record" (opzione -rr di RAR) ... vediamo se riusciamo ad avere una cosa non corrotta ...  =(

Guglielmo

Edit: Mi sembra vada ... scaricato con Chrome ed estratto senza errori ...  :smiley-roll:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Apr 29, 2013, 11:07 am
A me winrar dice fine imprevista nel file. Però estraggo il pdf e sembra corretto. L'ultima pagina è la 19 ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Apr 29, 2013, 11:09 am
L'ultimo RAR a me non ha dato nessun errore.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Apr 29, 2013, 11:13 am

A me winrar dice fine imprevista nel file. Però estraggo il pdf e sembra corretto. L'ultima pagina è la 19 ?

Si, è la 19 ! ... comunque stà diventando sempre più problematico allegare files ... :(

@Leo : .... moderatore, due domandine ...
 1. come mai viene usato ancora la versione 1.1.18 di SMF e non una nuova (versione 2.x) ?
 2. come mai viene usato SMF invece di qualche cosa di più robusto, sicuro ed affidabile come IPS o vB ?

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Apr 29, 2013, 11:38 am

@Leo : .... moderatore, due domandine ...
 1. come mai viene usato ancora la versione 1.1.18 di SMF e non una nuova (versione 2.x) ?
 2. come mai viene usato SMF invece di qualche cosa di più robusto, sicuro ed affidabile come IPS o vB ?

Nell'aria c'era un riaggiornamento globale del forum, così era stato preventivato tempo fa. Il "quando" questo verrà messo in pratica, non lo so.
Sulla scelta di SMF penso perché sia dettato da mere questioni economiche.

Ma prendi ciò che dico con le pinze, non essendo addentro alle faccende di Arduino (ci vorrebbe un membro del team per sapere esattamente le risposte alle tue domande)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Apr 29, 2013, 11:52 am

Nell'aria c'era un riaggiornamento globale del forum, così era stato preventivato tempo fa. Il "quando" questo verrà messo in pratica, non lo so.
Sulla scelta di SMF penso perché sia dettato da mere questioni economiche.
Ma prendi ciò che dico con le pinze, non essendo addentro alle faccende di Arduino (ci vorrebbe un membro del team per sapere esattamente le risposte alle tue domande)

Grazie Leo ...
... le "questioni economiche" mi sembrano strane   :smiley-eek: ... a parte il primo acquisto dove IPS costa magari qualche cosina di più (ma parliamo sempre di meno di 200 US$), poi il canone annuale è veramente misero ... ;)

Va bé ... speriamo che almeno sistemino questa XD XD XD

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Apr 29, 2013, 11:54 am
Magari è il mio winrar. Vecchia versione 4.20 su windows xp.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on May 06, 2013, 07:17 pm
ciao Guglielmo, volevo provare la tua libreria, ma per ora mi sono incartato con la new-liquidcrystal per usarla non I2C.
Se è I2C, dichiaro #include <LiquidCrystal_I2C.h>  e IDE Arduino copia i file giusti.

Nel tuo zip c'e' un zip Required_libraries.zip
Una delle cartelle è Buttons e l'altra LiquidCrystal_I2C.
Le ho copiate sotto le libraries di dove Arduino mette tuttli gli sketch.
Quale include faccio nel mio sketch se voglio usare LiquidCrystal (non I2C) ?
Se metto include  LiquidCrystal.h   Arduino IDE non và a prendere quella fornita?

Devo "eliminare" la LiquidCrystal di base, che non discende da LCD. Oppure devo sostituirla con i file giusti?

Spero di essere stato chiaro, ma dubito.

Avrei poi 2 idee:
1. vorrei fare un menu di prova usando non bottoni ma un telecomando. Quando ho fatto vorresti il mio sketch per eventualmente aggiungerlo ai tuoi esempi? (naturalmente commentando nel codice cosa cambiare a seconda del telecomando)
2. vorrei provare a pilotare il menu non con un lcd ma usando la libreria TVOut, sempre che Arduino regga (forse fattibile con la Mega).
Posso utilizzare la tua come base ?

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on May 06, 2013, 07:37 pm

...
Se metto include  LiquidCrystal.h   Arduino IDE non và a prendere quella fornita?
...


se metti #include <LiquidCrystal.h> il compilatore va a cercare quella e non una che si chiama in modo differente (LiquidCrystal_I2C.h) ;


Avrei poi 2 idee:
1. vorrei fare un menu di prova usando non bottoni ma un telecomando. Quando ho fatto vorresti il mio sketch per eventualmente aggiungerlo ai tuoi esempi? (naturalmente commentando nel codice cosa cambiare a seconda del telecomando)
2. vorrei provare a pilotare il menu non con un lcd ma usando la libreria TVOut, sempre che Arduino regga (forse fattibile con la Mega).
Posso utilizzare la tua come base ?


... no, aspetta, io ti ho passato una libreria, ma NON sono io l'autore ... come riportato nel .cpp "Created by Roberto Brunialti on 20/04/12." l'autore è lui ... magari, se ritieni sia utile, dovresti contattare direttamente l'autore (nonché manutentore della libreria) e passargli i tuoi suggerimenti :)

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on May 06, 2013, 09:53 pm
Volevo segnalarti alcuni errori nel documento MENWIZ_Quick_Tour_italian.pdf/doc

1.pagina 3, il link alla newliquidcrystal, manca il trattino - tra new e liquid
2.pagina 3, al fondo pagina, la nota "comsumare" invece di "consumare"
3.pagina 6, nell'esempio di codice manca il nodo3 (che invece c'e' nella pagina 4 e nell'esempio .ino)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on May 06, 2013, 10:02 pm
:) ... come descritto qui : http://arduino.cc/forum/index.php/topic,115498.msg1220307.html#msg1220307 (http://arduino.cc/forum/index.php/topic,115498.msg1220307.html#msg1220307) il documento è stato tradotto da "Alessandro Raffaele" ...

... non darmi meriti che non mi spettano XD

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on May 06, 2013, 10:18 pm
Oggi non ne azzecco una  :D  :smiley-sleep:  :D
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: BaBBuino on May 10, 2013, 05:09 pm
Voglio provarla su un aggeggio che sto realizzando ora ora. Mi fate un riassunto in 2 righe di cosa ho bisogno (senza discorrere di errori di versioni precedenti). Insomma, come se fosse uscita oggi l'ultima versione... Thanks!  XD
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: BaBBuino on May 11, 2013, 03:30 am
Ringraziando "nessuno" che gentilmente  :P  mi ha aiutato a capire la release finale, ho fatto funzionare il tutto e si sposa perfettamente con il mio aggeggio.

1) Ma utilizza un sacco di memoria! Rimane ben poco per lo sketch...  :smiley-roll:
Mi pare anche che la funzione che restituisce a schermo la memoria disponibile, non restituisca un valore attendibile.

Non usando il bus I2C, mi rimangono solamente 508 Byte di memoria disponibile. Eppure, infilatoci dentro il mio schetch, che è ben più corposo di 508 Byte, ci sta tutto e funziona!

2) L'opzione  che genera una serie di Opzioni (MW_LIST) a che serve precisamente?

Ho provato ad inserire un addVar(MW_ACTION, faccioqualcosa) dopo un Option, ma mi aspettavo che clikkando l'Option mi lanciasse la mia funzione, invece nisba...

s2=tree.addMenu(MW_VAR,s1, F("Node3");
s2->addVar(MW_LIST,&list);
s2->addItem(MW_LIST, F("Option1"));
s2->addItem(MW_LIST, F("Option2"));
s2->addItem(MW_LIST, F("Option3"));
// io ho aggiunto questo:
s2->addVar(MW_ACTION,faccioqualcosa);

//pensando che confermando Option3, mi lanciasse la funzione faccioqualcosa, ma in realtà la lancia subito dopo aver confermato su Node3 (in pratica spariscono gli Option....)

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on May 11, 2013, 09:56 am
Spesso nessono da ottimi consigli, lasciagli un karma  :)

Per memoria intende la ram, parlando sommariamente essa viene riempita e poi svuotata quando necessario. È un valore che serve relativamente, da valutare.
Se ti funziona va bene così, tanto appena finisce la ram, che piu che finire va a sovrascrivere una porzione dello stack, ti si schianta il programma e quindi te ne accorgi
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on May 11, 2013, 11:37 am

Ringraziando "nessuno" che gentilmente  :P  mi ha aiutato a capire la release finale


Bastava andare indietro di 1 pagina e avresti trovato il link al tutorial in italiano.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on May 11, 2013, 05:28 pm
@BaBBuino

il metodo addMenu crea un nodo (Node3) nell'albero del menu cioè una entry con la label "Node3". Nel tuo codice il nodo creato è di tipo MW_VAR.
Il metodo addVar definisce il tipo di variabile del nodo Node3. Nel tuo caso MW_LIST, in cui la variabile list serve per avere il numero della opzione eventualmente selezionata. Le dichiarazioni di addItem definiscono le opzioni di MW_LIST.
Fin qui tutto bene.
Poi tu utilizzi di nuovo la funzione addVar sullo stesso nodo per il quale avevi creato la variabile MW_LIST. Ovviamente la libreria sovrascrive con l'ultima chiamata quanto definito in precedenza e quindi Node3 diventa un avariabile di tipo MW_ACTION.
Prima della ultima addVar dovresti creare un uovo nodo

s2=tree.addMenu(MW_VAR,s1, F("Node4");

Dopo di che vedresti tutto correttamente.

Spero ti sia di aiuto
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: BaBBuino on May 11, 2013, 07:15 pm
Perfetto "pianialti" :D  Stavolta Gniente karma all'utente Nessuno

Ho capito, cioè, me lo immaginavo che dovevo creare u'altra istanza dipendete, ma pronti-via me lo sono immaginato così. come ti ho spiegato.

Stasera vedo se ho capito bene e se funziona correttamente come mi aspetto.

Tanks ;)

Ah! Un Tanks anche a Leo che ha messo dove meritava questa libreria. Pensavo fosse una sciocchezza di libreria, invece è molto ben fatta e ben articolata.

Unico neo: la spiegazione sul manuale è eccessivamente Informatichesca. Io che sono Elettronichesco ho avuto difficoltà a districarmi con i termini, anche se alla fine, dopo averla provata sull'ATMega, ho capito tutto (ma solo dopo averla esaminata on-fly).

Probabilmente con un linguaggio più da Nabbo, sarebbe ancora più accessibile.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on May 11, 2013, 09:21 pm
Quote

Unico neo: la spiegazione sul manuale è eccessivamente Informatichesca. Io che sono Elettronichesco ho avuto difficoltà a districarmi con i termini, anche se alla fine, dopo averla provata sull'ATMega, ho capito tutto (ma solo dopo averla esaminata on-fly).

Probabilmente con un linguaggio più da Nabbo, sarebbe ancora più accessibile.


... ehh ... è la mia vendetta contro gli elettronicheschi .... :-)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: zoster81 on May 20, 2013, 04:39 pm
Salve, inanzi tutto complimenti per questa libreria, però volevo fare un menù un popiù complesso degli esempi base e non riesco, non so se sbaglio io oppure e la libreria che ha questo limite, cerco di spiegarmi al meglio.

Ho la necesità di avere vari sub menu all'interno di altri menu, allego la porzione di codice che ho realizzato fin ora cercando di risolvere l'enigma, quello che mi succede e che non sempre tutte le voci vengono visualizzate, oppure le voci dei menu anche se appartenenti a sub menu diversi mi vengono unite e non riesco a capire per quale motivo.

Code: [Select]
r=tree.addMenu(MW_ROOT,NULL,F("Main Menu"));               
    s1=tree.addMenu(MW_SUBMENU,r, F("Operatore"));           
      s2=tree.addMenu(MW_VAR,s1, F("Sense"));         
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Automatico"));
        s2->addItem(MW_LIST, F("Manuale"));
      s2=tree.addMenu(MW_VAR,s1, F("Luminosita' schermo"));   
        s2->addVar(MW_AUTO_BYTE,&sp,0,100,1);
    s1=tree.addMenu(MW_SUBMENU,r, F("Tecnico"));             
      s2=tree.addMenu(MW_VAR,s1, F("Emu Mode"));               
        s2->addVar(MW_LIST,&cpmode);
        s2->addItem(MW_LIST, F("A"));
        s2->addItem(MW_LIST, F("B"));
        s2->addItem(MW_LIST, F("C"));
        s2->addItem(MW_LIST, F("D"));
        s2->addItem(MW_LIST, F("E"));
        s2->addItem(MW_LIST, F("F"));   
    s2=tree.addMenu(MW_SUBMENU,s1, F("Ethernet"));
        s3=tree.addMenu(MW_SUBMENU,s2, F("IP"));
          s3=tree.addMenu(MW_VAR,s2, F("Blocco A"));
          s3->addVar(MW_AUTO_BYTE,&sp,0,100,1);
          s3=tree.addMenu(MW_VAR,s2, F("Blocco B"));
          s3->addVar(MW_AUTO_BYTE,&sp,0,100,1);
          s3=tree.addMenu(MW_VAR,s2, F("Blocco C"));
          s3->addVar(MW_AUTO_BYTE,&sp,0,100,1);
          s3=tree.addMenu(MW_VAR,s2, F("Blocco D"));
          s3->addVar(MW_AUTO_BYTE,&sp,0,100,1);
        s3=tree.addMenu(MW_VAR,s2, F("Mask"));
          s3->addVar(MW_LIST,&mask);
          s3->addItem(MW_LIST, F("255.255.255.240"));
          s3->addItem(MW_LIST, F("255.255.255.224"));
          s3->addItem(MW_LIST, F("255.255.255.192"));
          s3->addItem(MW_LIST, F("255.255.255.128"));
          s3->addItem(MW_LIST, F("255.255.255.0"));
          s3->addItem(MW_LIST, F("255.255.0.0"));         
    s2=tree.addMenu(MW_VAR,s1, F("Salva e riavvia"));
      s2->addVar(MW_ACTION,SaveRestart);
       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);


Spero si capisca la logica del menu che voglio realizzare. Preciso che ho anche aumentato i valori massimi di menu nel file .h della libreria, grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: zoster81 on May 20, 2013, 06:38 pm
Vi aggiorno, ho risolto così..

Code: [Select]

_menu *r,*s1,*s2,*s3,*s4,*s5,*s6,*s7,*s8,*s9,*s10,*s11;

r=tree.addMenu(MW_ROOT,NULL,F("Main Menu"));
 
    s1=tree.addMenu(MW_SUBMENU,r, F("Operatore"));
      s2=tree.addMenu(MW_VAR,s1, F("Opt"));
        s2->addVar(MW_LIST,&LcRm);
          s2->addItem(MW_LIST, F("Auto"));
          s2->addItem(MW_LIST, F("Manual"));

      s2=tree.addMenu(MW_VAR,s1, F("Luminosita'")); s2->addVar(MW_AUTO_INT,&DispLum,5,100,5); 

    s3=tree.addMenu(MW_SUBMENU,r, F("Tecnico"));

      s6=tree.addMenu(MW_VAR,s3, F("MODE"));
        s6->addVar(MW_LIST,&EmuMode);
          s6->addItem(MW_LIST, F("A"));
          s6->addItem(MW_LIST, F("B"));
          s6->addItem(MW_LIST, F("C"));
          s6->addItem(MW_LIST, F("D"));
          s6->addItem(MW_LIST, F("E"));
          s6->addItem(MW_LIST, F("F"));
          s6->addItem(MW_LIST, F("G"));     

    s4=tree.addMenu(MW_SUBMENU,s3, F("Ethernet"));
      s7=tree.addMenu(MW_SUBMENU,s4, F("IP"));
        s8=tree.addMenu(MW_VAR,s7, F("Blocco A")); s8->addVar(MW_AUTO_BYTE,&IP_a,0,254,1);
        s8=tree.addMenu(MW_VAR,s7, F("Blocco B")); s8->addVar(MW_AUTO_BYTE,&IP_b,0,254,1);
        s8=tree.addMenu(MW_VAR,s7, F("Blocco C")); s8->addVar(MW_AUTO_BYTE,&IP_c,0,254,1);
        s8=tree.addMenu(MW_VAR,s7, F("Blocco D")); s8->addVar(MW_AUTO_BYTE,&IP_d,0,254,1);
     
      s9=tree.addMenu(MW_SUBMENU,s4, F("Gateway"));
        s10=tree.addMenu(MW_VAR,s9, F("Blocco A")); s10->addVar(MW_AUTO_BYTE,&GW_a,0,254,1);
        s10=tree.addMenu(MW_VAR,s9, F("Blocco B")); s10->addVar(MW_AUTO_BYTE,&GW_b,0,254,1);
        s10=tree.addMenu(MW_VAR,s9, F("Blocco C")); s10->addVar(MW_AUTO_BYTE,&GW_c,0,254,1);
        s10=tree.addMenu(MW_VAR,s9, F("Blocco D")); s10->addVar(MW_AUTO_BYTE,&GW_d,0,254,1);

      s11=tree.addMenu(MW_VAR,s4, F("Mask"));
        s11->addVar(MW_LIST,&maskselection);
          s11->addItem(MW_LIST, F("255.255.255.240"));
          s11->addItem(MW_LIST, F("255.255.255.224"));
          s11->addItem(MW_LIST, F("255.255.255.192"));
          s11->addItem(MW_LIST, F("255.255.255.128"));
          s11->addItem(MW_LIST, F("255.255.255.0"));
          s11->addItem(MW_LIST, F("255.255.0.0"));

    s5=tree.addMenu(MW_SUBMENU,s3, F("POT"));
// al momento vuoto andrà un MW_LIST come sopra

       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);



Spero che sia cosa gradita il codice da me scritto e qui postato, visto che ora questo è un chiaro esempio di nodi gerarchici con varie cose implementate, mi chiedevo comunque se questo fosse o meno il giusto approccio, e davvero necessario dover dichiarare tutti questi menù per realizzare la medesima struttura di menù? grazie e a buon rendere :D
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on May 20, 2013, 06:40 pm
ad occhio il tuo menu non è dei più complessi per MENWIZ.
devo verificare in pratica asap!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on May 20, 2013, 06:51 pm
mi hai battuto sul tempo. la mia risposta era per il tuo post precedente....
Non so se ho capito la tua domanda. Se ti riferisci alle variabili s1...s10, tipo _menu * , ne bastano solo quanti sono i livelli massimi di nesting dei menu, Le variabili di tipo pointer servono infatti per chiamare i metodi (addVar, addItem) sullo specifico oggetto di tipo menu, ma possono essere riutilizzati, non essendo poi necessari al codice utente. I nodi del menu non sono creati alla dichiarazione di un tipo _menu*, ma sono o preallocati o sono creati dinamicamente dai metodi invocati di tipo addXxx.
Quindi nel tuo caso basterebbero s1,s2,s3,se il massimo livello di nesting è 3.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: zoster81 on May 20, 2013, 07:15 pm
Grazie per la risposta, però come vedi ho provato limitandomi a s1,s2,s3, ma non sono riuscito a fare la stessa cosa e quindi ho ripiegato in questo modo, perchè quello che succedeva e che mi si mischiavano le voci dei menù, quando uscivo da un menu mi ritrovavo dentro un'altro e così via.

Sapresti darmi una base di codice pulita per fare cio che vorrei fare io?(intendiamoci non voglio scritto il codice ma un aiutino)

Perchè effettivamante, per come ne sono venuto a capo, penso che mangi davvero tanta ram dal chip, al momento sto testando su un'arduino uno, a breve faro le prove su un mega2560, ma mi preoccupa molto il problema ram, inquanto nella parte di programma qui non esposta è presente un'intera emulazione di protocolle ethernet di un macchinario più diverse altre funzioni di controllo e uso intensivo di ingressi e uscite, e senza l'implementazione del menù ho avuto diversi problemi per colpa della ram, che sudando non poco sono riuscito a risolvere. Mi chiedo quando avrò tra le mani il mega e unirò questa prova di menu al codice gia scritto cosa succederà.

Ti faccio poi un'altra domanda, come vedi mi trovo a dover gestire 4 byte di un'IP, ancora la libreria non gestisce array di byte vero? Ritieni che il mio approccio sia giusto nella gestione dei 4 byte?

grazie ancora
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on May 31, 2013, 11:34 pm
@zoster81
scusa la mia latitanza. ma sono veramente un po incasinato e quasi sempre fuori.
Si menwiz consuma ram. in parte alloca staticamente in parte dinamicamente le strutture dati. il modello ibrido non è astrattamente il migliore, ma data l'architettura dell'atmel è un onesto compromesso (io allocherei tutto dinamicamente ... :-) )
Si può fare meglio ? Forse si, ma qualunque soluzione è relativa: se diminuisco lo spazio preallocato delle opzioni, se ho molti oggetti di tipo mw_list devasto la ram. se lo aumento consumo troppa flash. Aspettiamo un po più di ram (non ne serve tantissima di più...)

Vorrei implementare dati complessi (testi ed array) editabili, anzi li ho implementati, ma la libreria così è cresciuta troppo. So come riscrivere la libreria per salvare un po di spazio (un po, non troppo) in sram. Ma sono pigro ed al momento non troverei il tempo per farlo. Ho anche altre librerie sfiziose, ma ugualmente non trovo  tempo per pulirle e documentarle ...
Detto questo, qualcosa devo pur fare, di abbastanza generale. Sicuramente un campo editabile, se non cresce troppo la dimensione del codice. E un po di pulizia del codice.  

Come suggerimento verifica se usi sprintf. Consuma un bel po di memoria.
Title: MENWIZ 1.3 beta
Post by: brunialti on Aug 09, 2013, 02:41 pm
In allegato c'è la nuova versione di menwiz con alcune funzioni che credo interessanti:
- un nuovo tipo variabile: testo editabile. funziona solo con 6 bottoni, sino a quando non mi viene in mente una modalità di interazione usabile anche con 4 bottoni..
- è possibile definire sino a tre "utenti" differenti e abilitare/disabilitare i menu per ciascuno di essi

La libreria non è aumentata come footprint e dovrebbe risparmiare qualche decina di byte di sram.
E' solo in beta e potrebbe avere dei bug...
ciao
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Aug 09, 2013, 02:51 pm
Ciao Bruno,
la puoi allegare al primo tuo post?
Così si evita di doverla cercare in giro nel caso il topic diventasse sempre più grande. (te lo auguro)
Grazie.  :smiley-mr-green:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 09, 2013, 03:04 pm
fatto
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 18, 2013, 03:33 pm
ciao a tutti
ho un display 20x4 con SPI ma non riesco a vedere gli esempi, come posso fare?
sono agli inizi e quindi so che la soluzione è sotto il mio naso e non la vedo!
grazie in anticipo!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 18, 2013, 04:14 pm

non riesco a vedere gli esempi

Significa che non ti funzionano o che non li vedi elencati nel menu a tendina dell'IDE?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 18, 2013, 04:18 pm
proprio l'LCD non visualizza
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 18, 2013, 04:45 pm
Sei sicuro dei collegamenti?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 18, 2013, 04:55 pm
ho collegato come da sito
http://learn.adafruit.com/i2c-spi-lcd-backpack/connect-to-spi
ed era ok poi ho installato le lib di MENWIZ ma niente, non so dove mettere le mani vista la mia scarsa pratica
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Aug 18, 2013, 06:37 pm
Ma eliminando la menwiz ed usandolo normalmente funziona ?
Il fatto che stai usandi il bus SPI può forse dar fastidio alla lib ? Non credo, ma prova anche con displai in parallelo o in i2c
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 18, 2013, 10:19 pm
in i2c non c'è verso di farlo funzionare comunque senza le librerie liquidcrystal_i2c, menwiz e buttons il display gira
posto il codice d'esempio:

Code: [Select]
/*
Demonstration sketch for Adafruit i2c/SPI LCD backpack
using 74HC595 SPI expander
( http://www.ladyada.net/products/i2cspilcdbackpack/index.html )

This sketch prints "Hello World!" to the LCD
and shows the time.

 The circuit:
* 5V to Arduino 5V pin
* GND to Arduino GND pin
* CLK to Digital 2
* DAT to Digital 3
* LAT to Digital 4
*/


// include the library code:
#include "Wire.h"
#include "LiquidCrystal.h"

// Connect via SPI. Data pin is #3, Clock is #2 and Latch is #4
LiquidCrystal lcd(3, 2, 4);

void setup() {
 // set up the LCD's number of rows and columns:
 lcd.begin(16, 2);
 // Print a message to the LCD.
 lcd.print("hello, world!");
}

void loop() {
 // set the cursor to column 0, line 1
 // (note: line 1 is the second row, since counting begins with 0):
 lcd.setCursor(0, 1);
 // print the number of seconds since reset:
 lcd.print(millis()/1000);

}


edit by mod: per favore includi il codice usando gli appositi tag
credo sia proprio liquidcrystal_i2c
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 18, 2013, 11:25 pm
Precondizione per usare Menwiz è che il device funzioni  con le librerie della "Nuova" LiquidCrystal di  F. Malpartida.
Se , come mi sembra, non stai usando questa libreria per testare l'LCD ma stai usando la LiquidCrystal custom fornita da Adafruit, è molto probabile che non funzioni.

Riassumendo: usa la libreria LiquidCrystal inclusa in Menwiz da sola. se funziona allora anche Menwiz deve funzionare. se non funziona (possibile perchè è una libreria custom del produttore) allora Menwiz non funzionerà, e necessitera di alcune modifiche probabilmente semplici, ma che suggerisco di fare solo a chi ha esperienza con Arduino e il c++.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Aug 18, 2013, 11:39 pm
questo e' molto interessante, ma quindi nemmeno con la libreria standard arduinica funziona ?
Perche' questo legame con la libreria ? non si puo' astrarre il funzionamento dei menu' dalle librerie usate ?
Quindi ad esempio sui display e culla liberria che ho in firma non funziona ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 19, 2013, 08:00 am
grazie
purtroppo da sola la nuova LiquidCrystal non funziona, provo a collegarlo in I2C anche se ho paura che usando il bus i2c  l'lcd
non funziona nemmeno con librerie sue, all'inizio avevo tentato e mi sono rifugiato in SPI.
Pomeriggio vi faccio sapere
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 19, 2013, 09:40 am
@Testato
L'astrazione è il motivo per cui ho usato la "Nuova" LiquidCrystal ed è il motivo per cui è stata scritta. Infatti è una sola libreria ma supporta molti protocolli (4 wires, 8 wires, I2C,   seriale, SPI, shiftregiter mode ) e sta per essere rilasciata anche su più controller, la dove quella arduinica supporta solo la modalità parallela. Inoltre le prestazioni sono molto superiori. Per fare questo ha astratto l'interfaccia dalla implementazione.
E' una libreria non "ufficiale" ma estremamente diffusa. Ha la stessa interfaccia di programmazione ed è "drop in" rispetto alla originale. Guarda https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home
Usare quella Arduinica avrebbe significato poter supportare solo una modalità.
Il problema delle interfacce custom, legate ai singoli prodotti, è che comunque devono rimpiazzare quella standard e a quel punto meglio usare la "Nuova".
Menwiz e molto semplicemente portabile sulla libreria standard o su altre (se segui il thread in inglese vedrai che è stata portata su device custom varie volte) ma per non impazzire e non potendo supportare i singoli utenti per i diversi porting (e per ciascuna versione!) io ho scelto di usare la "Nuova".
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Aug 19, 2013, 05:11 pm
capisco, non fa una piega.
la mia in firma deriva da un altro lavoro che ha modificato l'originale in i2c per usare i PCF, poi modificata per usare i chip cog ST, alla quale ho fatto ulteriori modifiche.
Appena ci rimetto mano verifico se e' compatibile con menwiz, se sono fortunato il creatore originale della prima i2c significa che e' partito dalla newLiquid
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 19, 2013, 11:05 pm
anche con bus I2C il risultato non cambia, con liquidcrystal è ok e con la nuova niente.
Non sono sicuramente in grado di mettere mano alle librerie quindi dovrò trovare qualcos'altro che supporti le normali liquid  :(
Se devo essere sincero preferirei un progetto completo da studiare visto che sono agli inizi e lavorare su qualcosa di gia pronto
non è solo comodo ma utile per imparare.
GRAZIE!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunello22 on Aug 20, 2013, 12:14 am
Purtroppo la libreria di Fmalpartida usa una configurazione di collegamento del Pcf8574 all' LCD diversa da altri.
In pratica ha i pin EN e RS invertiti
Quindi con adattatori I2C-LCD economici ( vedi il classico I2C LCD1602 ) non funziona.

Ma basta aggiungere i parametri corretti nell'inizializzazione
quindi
LiquidCrystal_I2C lcd(0x38);  // Set the LCD I2C address
diventa
LiquidCrystal_I2C lcd(0x38,4,5,6);  // Set the LCD I2C address


Ps. Ricordatevi che se l'adattatore ha a bordo il PCF8574A l' indirizzo e':
LiquidCrystal_I2C lcd(0x38,4,5,6);  // Set the LCD I2C address

se ha il PCF8574 l'indirizzo e' :
LiquidCrystal_I2C lcd(0x20,4,5,6);  // Set the LCD I2C address
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 20, 2013, 09:54 pm
Brunello ho provato con le modifiche da te indicate ma per ora non ho avuto risultati

LiquidCrystal_I2C lcd(0x20,4,5,6);  // Set the LCD I2C address

...4, 5, 6 sta per?

il mio display è collegato in A4,A5
grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunello22 on Aug 20, 2013, 11:01 pm
Quote
...4, 5, 6 sta per?

Si riferiscono alle porte del PCF8574

ma se tu hai la scheda di Adafruit di cui avevi messo il link, quella scheda monta il  MPC23008

e non ho controllato se la libreria New liquidcrystal gestisce quel chip
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 21, 2013, 08:22 am
purtroppo parla solo del PCF8574
non ho approfondito molto ma mi sembra proprio sia così.
Magari mi procuro un display con quel chip, la libreria è molto ben documentata e anche MENWIZ lo è, con
buona volontà penso che posso imparare ad usarle.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Aug 21, 2013, 01:51 pm
e' lo stesso discorso che sto facendo io, i miei display, in firma, utilizzano un diverso chip e quindi le librerie non funzionano. Non sapevo pero' che questa libreria per creare menu' fosse legata alla libreria del display, credevo fosse una cosa che sta aldisopra di qualsiasi libreria di display, invece no', integra direttamente una libreria e solo quella e' utilizzabile. quindi per usare chip che non sono compatibili si deve mettere mano al tutto, prima alla libreria del display poi alla libreria dei menu'
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 21, 2013, 03:31 pm
infatti forse si fa prima a procurarsi idoneo display, io avrei un I2c con il giusto chipset da montare al posto di quello attuale ma devo dissaldare il tutto. Faccio prima a prendere un altro display.
MENZIW lavora meglio su 16x2 o 20x4?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 21, 2013, 03:52 pm
@testato
non è possibile scrivere un alibreria di menu "qualsiasi sia la libreria di display" in quanto librerie con semantica e/o sintassi diversa non potrebbero funzionare. Vero è però che se la libreria ha una interfaccia identica a LiquidCrystal le modifiche si fanno in 2 minuti (saranno un paio di righe ad occhio e se nonmi sono rincitrullito sotto il sole).

@gutty
usa una 20x4. Con la 16x2 alcune funzioni di visualizzazione non sono disponibili o hanno poco senso. Puoi usare anche altri formati, essendo Menwiz parametrica.
ciao
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 21, 2013, 04:02 pm
La soluzione sarebbe creare una serie di binding per le diverse librerie grafiche e poi "agganciare" la Menwiz alla libreria che si sta usando con l'apposito binding. Ma mi pare che poi diventi un lavoro lungo.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 21, 2013, 04:04 pm
Per usare la libreria standard di arduino o altra libreria con medesima  interfaccia devi fare le seguenti modifiche in MENWIZ.h:

commenda la seguente riga
#include <LCD.h>
EDIT ... e sostituisci con la libreria che usi, p.es. #include <liquidCrystal.h>

Modifica la seguente riga
#define MW_LCD         LCD   // this could help to change the library: your lcd data type
sostituendo a LCD la classe del tuo display: per esempio se la tua è una libreria liquidCrystal standard, metti liquidCrystal

Dovrebbe essere tutto qui. Ma non avendo sottomano lcd con interfacce 4/8 wires non posso testare la cosa. fammi sapere
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 21, 2013, 04:07 pm
@leo72
ma lo fa gia la libreria di fmalpartida! il codice di menwiz chiama funzioni della istanza di lcd come setCursor, begin ecc. Poiche la specifica libreria potrebbe avere funzioni diverse io dovrei mettere una serie di compilazini condizionali oppure mantenere librerie separate.... Giammai in questa vita :-)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gutty on Aug 21, 2013, 11:35 pm

Per usare la libreria standard di arduino o altra libreria con medesima  interfaccia devi fare le seguenti modifiche in MENWIZ.h:

commenda la seguente riga
#include <LCD.h>
EDIT ... e sostituisci con la libreria che usi, p.es. #include <liquidCrystal.h>

Modifica la seguente riga
#define MW_LCD         LCD   // this could help to change the library: your lcd data type
sostituendo a LCD la classe del tuo display: per esempio se la tua è una libreria liquidCrystal standard, metti liquidCrystal



non trovo
#define MW_LCD         LCD
in MENWIZ.h
scusa  :~
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Aug 22, 2013, 06:22 am

@leo72
ma lo fa gia la libreria di fmalpartida!

Lo sai tu, io non ho visto il codice della tua lib, figurarsi quello di fmalpartida  ;)

Quote

Giammai in questa vita :-)

Era quello che dicevo io  :D
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 22, 2013, 01:12 pm
@ jgutty
Quale versione di menwiz hai? Dalla 1.2 in poi (vedi su github) in menwiz.h c'e quella linea di codice...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Aug 30, 2013, 07:50 pm
Grazie ai coraggiosi tester ho inserito la versione 1.3.1 beta con un fix alla opzione MW_MENU_INDEX che ora si può abilitare/disabilitare correttamente.
Manca solo il salvataggio in EEPROM delle variabili di tipo MW_EDIT_TEXT prima del rilascio definitivo. Sempre che non ci siano altri errori...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: eddigei on Sep 02, 2013, 07:08 pm
Ho Scaricato l'ultima versione de github. caricando l'esempio Test_all_var_types_new e compilando mi esce questo errore
Code: [Select]

In file included from Test_all_var_types_new.cpp:7:0:
libraries/MENWIZ/MENWIZ.h:158:3: error: '__FlashStringHelper' does not name a type
libraries/MENWIZ/MENWIZ.h:172:25: error: '__FlashStringHelper' does not name a type
libraries/MENWIZ/MENWIZ.h:172:25: error: ISO C++ forbids declaration of 'parameter' with no type
libraries/MENWIZ/MENWIZ.h:176:3: error: '__FlashStringHelper' does not name a type
libraries/MENWIZ/MENWIZ.h:195:34: error: '__FlashStringHelper' does not name a type
libraries/MENWIZ/MENWIZ.h:195:34: error: ISO C++ forbids declaration of 'parameter' with no type
Test_all_var_types_new.cpp: In function 'void setup()':
Test_all_var_types_new.cpp:50:44: error: 'F' was not declared in this scope
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 02, 2013, 08:41 pm
@eddigei
ti ho risposto nel thread in inglese dove hai postato la stessa domanda...

EDIT
Stai usando la versione beta dell'IDE, la 1.5.3. beta?
Non l'ho ancora testata in quell'ambiente. Ha tra l'altro un formato nuovo delle librerie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: eddigei on Sep 02, 2013, 08:51 pm
ho la versione 1.0.3 di arduino ide e poi ho testato anche con il software mpide per chipKit


@eddigei
ti ho risposto nel thread in inglese dove hai postato la stessa domanda...

EDIT
Stai usando la versione beta dell'IDE, la 1.5.3. beta?
Non l'ho ancora testata in quell'ambiente. Ha tra l'altro un formato nuovo delle librerie


Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 02, 2013, 08:57 pm
Non riesco a ripetere il problema.
Fa come suggerivo. cancella tutto (se puoi), reistalla ambiente arduino e librerie.
Non saprei che altro dire :-)  non ho avuto segnalazioni simili
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Sep 02, 2013, 09:10 pm
@eddigei, ma hai aggiornato la tools chains di atmel dentro l'IDE arduino?
http://forum.arduino.cc/index.php?topic=96976.0
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 02, 2013, 09:11 pm
Hai installato la libreria "new" LiquidCrystal al posto di quella di stock?
Devi cancellare quella vecchie e poi copiare la nuova.
Poi prova il tuo lcd con la nuova linreria (esempi) senza mettere ancora menwiz.
Se funziona metti Menwiz, verificando che ce ne seia una sola copia in giro

EDIT ho usato la ide 1.5.3 beta Funziona. Ho notato che evidentemente hanno aggiornato la toolchain perchè la dimensione finale dell'esempio è molto più piccola. O è la digestione  ]:D
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: eddigei on Sep 02, 2013, 09:13 pm

Hai installato la libreria "new" LiquidCrystal al posto di quella di stock?
Devi cancellare quella vecchie e poi copiare la nuova.
Poi prova il tuo lcd con la nuova linreria (esempi) senza mettere ancora menwiz.
Se funziona metti Menwiz, verificando che ce ne seia una sola copia in giro

no asp !! dove la prendo la nuova LiquidCrystal?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 02, 2013, 09:17 pm
Nel file REQUIRED_LIBRARIES.zip incluso nella ibreria ....  8)


EDIT... ma nel forum inglese hai scritto "I downloaded the latest version of the library and I added the libraries LiquidCrystal_I2C and buttons but I have always the same error". Continua il thread solo in una lingua o finiamo per soffrire di turbe di personalità...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: eddigei on Sep 02, 2013, 09:41 pm
meglio in italiano :D cmq si l ho usata quella libreria ma purtroppo ho lo stesso problema.. può essere linux?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 02, 2013, 09:45 pm
cioè il problema viene dalla libreria LiquidCrystal?
Non saprei che dire. Su Linux normalmente funziona tutto....
E il tipo di errori è dell'ide e del codice...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Sep 02, 2013, 09:49 pm

meglio in italiano :D cmq si l ho usata quella libreria ma purtroppo ho lo stesso problema.. può essere linux?


Occhio che quella nuova la puoi mettere sotto
H:\Arduino\_projects\libraries           (librerie tue o non fornite con l'IDE)
ma quella vecchia sotto:
H:\Arduino\arduino-IDE\libraries         (librerie fornitote con l'IDE)
la devi eliminare
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Sep 03, 2013, 10:41 am

EDIT ho usato la ide 1.5.3 beta Funziona. Ho notato che evidentemente hanno aggiornato la toolchain perchè la dimensione finale dell'esempio è molto più piccola. O è la digestione  ]:D


Creerai anche la libreria nel nuovo formato?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 03, 2013, 12:08 pm
Certo. Solo devo verificare la retrocompatibilita. Non vorrei che chi utilizza le versioni precedenti dell Ide abbia problemi.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Sep 03, 2013, 12:23 pm
Non c'è retrocompatibilità.
Per il momento la vecchia struttura funziona anche sulla 1.5.3. Più avanti, molto più avanti, non verrà più accettata.
Se decidi di creare una libreria modello 1.5.3 dovrai averne anche una seconda per la serie 1.0.5 e aggiornarle in contemporanea.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 03, 2013, 01:47 pm
... mi hai convinto. Vecchio formato ....
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Sep 04, 2013, 09:27 am

Non c'è retrocompatibilità.
Per il momento la vecchia struttura funziona anche sulla 1.5.3. Più avanti, molto più avanti, non verrà più accettata.
Se decidi di creare una libreria modello 1.5.3 dovrai averne anche una seconda per la serie 1.0.5 e aggiornarle in contemporanea.

[OT]
Doppia fatica per chi come me fa diverse lib... mi tocca convertire tutto anche per l'IDE 1.5...  :smiley-sweat:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Sep 04, 2013, 11:00 am

Non c'è retrocompatibilità.
Per il momento la vecchia struttura funziona anche sulla 1.5.3. Più avanti, molto più avanti, non verrà più accettata.
Se decidi di creare una libreria modello 1.5.3 dovrai averne anche una seconda per la serie 1.0.5 e aggiornarle in contemporanea.


Scusa, dove si può leggere come deve essere la struttura delle nuove librerie?
Un link per favore, non trovo nulla   :smiley-red:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Sep 04, 2013, 11:06 am
--> https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification (https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification)
Poi scarica l'IDE 1.5.3 e guarda le nuove librerie create dal Team. Si impara di più.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Enzo1947 on Sep 25, 2013, 10:28 am
Salve a tutti.

Mi sono affacciato da poco al mondo Arduino e, al momento, sto programmando un Arduino Mega.
  :) Complimenti per l'ottima gestione del forum e dei consigli e delle soluzioni che vengono elargiti a chi ha dei problemi, spesso risolvendo in tempi brevi quello che ci farebbe perdere del tempo prezioso nella programmazione.

Vorrei chiedere:
Utilizzo un display da 7" con le librerie UTFT ed UTFT_CTE, con queste istruzioni:

UTFT myGLCD(CTE70,38,39,40,41);
UTFT_CTE CTE_LCD(&myGLCD);

posso usare la libreria MenWiz?

Se si, cosa devo cambiare?

Grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Sep 25, 2013, 11:25 am

...
posso usare la libreria MenWiz?
...


Se leggi da QUI (http://forum.arduino.cc/index.php?topic=115498.msg1357817#msg1357817) in poi, vedrai che molto probabilmente è NO, non la puoi usare senza modifiche al codice ...  :smiley-roll:

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 25, 2013, 02:21 pm
Confermo. Non si può usare Menwiz.
Bisognerebbe riscrivere le funzioni di visualizzazione e di inizializzazione.
In realtà la visualizzazione è completamente staccata dalla gestione (creazione del menu e logica di navigazione) ma sono anche le funzioni più rognose...
Chissa magari in futuro...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Enzo1947 on Sep 25, 2013, 02:49 pm
Grazie delle risposte.

Un'altra domanda.
La nuova libreria LiquidCrystal, supporta i display grafici con risoluzione 800x480?

Grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Sep 25, 2013, 03:02 pm
La "famiglia" di librerie liquidCrystal supporta solo LCD a caratteri.
Ci sono molte librerie grafiche, ma non avendone mai usata una non ti so consigliare.
Può essere utile seguire questo thread:

http://forum.arduino.cc/index.php?topic=187761.0
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Oct 16, 2013, 07:02 pm
Apri un topic nella sezione generale e cancella questo.
Grazie.

Da quello che ho capito hai problemi di gestione del display che vengono prima della gestione del menù con la libreria di Bruno.
Quindi il tuo post qui non ci azzecca (cit.). :smiley-sweat:
Una volta risolto quello allora potrai proseguire qui per problemi specifici di questa libreria.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Oct 16, 2013, 07:05 pm
ci provo... visto che è la libreria LiquidCrystal...
prova a sostituire
LiquidCrystal_I2C lcd(0x20);  // Set the LCD I2C address

con
LiquidCrystal_I2C lcd(0x20 , BACKLIGHT_PIN, POSITIVE) oppure
LiquidCrystal_I2C lcd(0x20, BACKLIGHT_PIN, NEGATIVE)

.... fammi sapere :-)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Oct 16, 2013, 08:38 pm
No, purtroppo non funziona. Uguale a prima    :~

Però mi viene un serio dubbio: seguendo sempre lo schema preso dal sito postato sopra, al PIN 13 di Arduino non arriva niente. Potrebbe essere questo il problema?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Oct 17, 2013, 12:25 pm
Come suggerito dal moderatore ho aperto un nuovo topic sulla sezione generale:
http://forum.arduino.cc//index.php?topic=193882.0 (http://forum.arduino.cc//index.php?topic=193882.0)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Oct 19, 2013, 05:26 pm
Analizzando la parte dove vengono analizzati i pin di arduino collegati ai pulsanti:
Code: [Select]
// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BUTTON_PIN       9
#define DOWN_BUTTON_PIN     10
#define LEFT_BUTTON_PIN     7
#define RIGHT_BUTTON_PIN    8
#define CONFIRM_BUTTON_PIN  12
#define ESCAPE_BUTTON_PIN   11


è possibile battezzare invece dei pin 9, 10, 7, 8, 12, 11, degli ingressi di un PCF8574 tipo P0, P1, P2 ....?
Ad esempio, in questo codice:
Code: [Select]
//The full code is in library example file Quick_tour.ino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>
#include <IOexp.h>


#define IO_ADDR (0x21)  //Definisco l'indirizzo del pcf8574 dei bottoni
IOexp myIOexpander(IO_ADDR);

// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BOTTON_PIN       9
#define DOWN_BOTTON_PIN     10
#define LEFT_BOTTON_PIN     7
#define RIGHT_BOTTON_PIN    8
#define CONFIRM_BOTTON_PIN  12
#define ESCAPE_BOTTON_PIN   11

menwiz tree;
// create lcd obj using LiquidCrystal lib
LiquidCrystal_I2C lcd(0x20);

int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;
 
  Wire.begin(); // join i2c bus (address optional for master)
 
  Serial.begin(19200);   
  tree.begin(&lcd,20,4); //declare lcd object and screen size to menwiz lib

  r=tree.addMenu(MW_ROOT,NULL,F("Root"));
    s1=tree.addMenu(MW_SUBMENU,r, F("Node1"));
      s2=tree.addMenu(MW_VAR,s1, F("Node3"));
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Option1"));
        s2->addItem(MW_LIST, F("Option2"));
        s2->addItem(MW_LIST, F("Option3"));
      s2=tree.addMenu(MW_VAR,s1, F("Node4"));
        s2->addVar(MW_AUTO_INT,&sp,0,120,10); 
    s1=tree.addMenu(MW_VAR,r, F("Node2"));
      s1->addVar(MW_ACTION,myfunc);
       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
  }

void loop(){
  tree.draw();
 
  int data;
  bool bool1, bool2, bool3, bool4, bool5, bool6; // the bool vars bool1 and bool2 are to store the status of the Inputs we wish to read.
  Serial.print("teste ! ");
  bool1 = myIOexpander.read(P0);
  bool2 = myIOexpander.read(P1);
  bool3 = myIOexpander.read(P2);
  bool4 = myIOexpander.read(P3);
  bool5 = myIOexpander.read(P4);
  bool6 = myIOexpander.read(P5);
  Serial.print(bool1);
  Serial.print(" ");
  Serial.print(bool2);
  Serial.print(" ");
  Serial.print(bool3);
  Serial.print(" ");
  Serial.print(bool4);
  Serial.print(" ");
  Serial.print(bool5);
  Serial.print(" ");
  Serial.print(bool6);
  Serial.print(" \n ");
  delay(500);
 
  }

void myfunc(){
  Serial.println("ACTION FIRED");
  }


ho unito l'esempio della libreria MENWIZ con l'esempio della libreria IOexp e quello che ottengo è di vedere il menu sul display collegato al primo PCF8574, e di poter cambiare lo stato degli ingressi (da alto a basso) di un secondo PCF8574 e visualizzarli sul monitor seriale.
Considerando il secondo codice che ho postato, vorrei capire se si può fare una cosa di questo tipo con la giusta sintassi:
Code: [Select]
#define UP_BOTTON_PIN       myIOexpander.read(P0)
#define DOWN_BOTTON_PIN     myIOexpander.read(P1)
#define LEFT_BOTTON_PIN     myIOexpander.read(P2)
#define RIGHT_BOTTON_PIN    myIOexpander.read(P3)
#define CONFIRM_BOTTON_PIN  myIOexpander.read(P4)
#define ESCAPE_BOTTON_PIN   myIOexpander.read(P5)

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Oct 21, 2013, 02:40 pm
Nessuno ha qualche idea su come poter sfruttare un pcf8574 per i pulsanti?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Oct 24, 2013, 02:54 pm
E' un integrato che si pilota via I2C (quindi libreria Wire) e su cui trovi su internet migliaia di esempi  ;)
Uno a caso:
http://www.gioblu.com/tutorials/comunicazione/109-keypad-i2c
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Oct 24, 2013, 03:17 pm

Code: [Select]
#define UP_BOTTON_PIN       myIOexpander.read(P0)



Non ho la certezza matematica, ma non credo. Nel codice della libreria penso ci siano delle istruzioni del tipo digitalRead(UP_BUTTON_PIN);
Pensa se in quella istruzione sostituisci la parola con quella tua funzione!!!

Secondo me hai 2 alternative, la prima è modificarti la libreria e sostituire la gestione dei normali pulsanti con i tuoi comandi per il PCF. La seconda e forse più semplice è utilizzare un comando della libreria che permette di sostituire la funzione che gestisce i comandi/pulsanti con una funzione dove tu gestisci i comandi. Ad esempio io l'ho fatto per gestire i menu tramite telecomando IR.
La funzione è addUsrNav()   se guardi sul manualetto pdf della libreria ci sono le spiegazioni.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Oct 30, 2013, 11:13 am
Grazie a tutti.
In questi giorni sono stato impegnato in un altro progettino ma appena riesco riprendo a mano anche questo.
Mi sa che mi studierò la funzione addUsrNav().
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Nov 11, 2013, 12:08 pm
Ciao a tutti,
torno alla carica con la soluzione per abbinare alla libreria menwiz l'utilizzo di pulsanti gestiti da un pcf8574.
Ho modificato il codice per cercare di utilizzare il metodo addUsrNav:
Code: [Select]
//The full code is in library example file Quick_tour.ino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>
#include <IOexp.h>


#define IO_ADDR (0x21)  //Definisco l'indirizzo del pcf8574 dei bottoni
IOexp myIOexpander(IO_ADDR);

menwiz tree;
// create lcd obj using LiquidCrystal lib
LiquidCrystal_I2C lcd(0x20);

int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;
 
  Wire.begin(); // join i2c bus (address optional for master)
 
  Serial.begin(19200);   
  tree.begin(&lcd,20,4); //declare lcd object and screen size to menwiz lib

  r=tree.addMenu(MW_ROOT,NULL,F("Root"));
    s1=tree.addMenu(MW_SUBMENU,r, F("Node1"));
      s2=tree.addMenu(MW_VAR,s1, F("Node3"));
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Option1"));
        s2->addItem(MW_LIST, F("Option2"));
        s2->addItem(MW_LIST, F("Option3"));
      s2=tree.addMenu(MW_VAR,s1, F("Node4"));
        s2->addVar(MW_AUTO_INT,&sp,0,120,10); 
    s1=tree.addMenu(MW_VAR,r, F("Node2"));
      s1->addVar(MW_ACTION,myfunc);
       //tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
       tree.addUsrNav(tasti,6); 
  }

void loop(){
  tree.draw();
 
  int data;
  }

void myfunc(){
  Serial.println("ACTION FIRED");
  }
 
int tasti(){
  if(myIOexpander.read(P0)==1){
    return MW_BTU;}
  else if (myIOexpander.read(P1)==1){
    return MW_BTD;}
  else if (myIOexpander.read(P2)==1){
    return MW_BTL;}
  else if (myIOexpander.read(P3)==1){
    return MW_BTR;}
  else if (myIOexpander.read(P4)==1){
    return MW_BTE;}
  else if (myIOexpander.read(P5)==1){
    return MW_BTC;}
  else
    return MW_BTNULL;
  }


e già ho un problema di compilazione. Probabilmente ho interpretato male qualcosa. Ecco l'errore:
menwizmenu.ino: In function 'void setup()':
menwizmenu:51: error: no matching function for call to 'menwiz::addUsrNav(int (&)(), int)'
C:\Program Files (x86)\Arduino\libraries\MENWIZ/MENWIZ.h:180: note: candidates are: void menwiz::addUsrNav(int (*)())

Mi potete aiutare?
Grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Nov 11, 2013, 12:23 pm
vai su MENWIZ.h e guarda come è dichiarata la funzione. Ad occhio sembra che tu usi la call inteface di MENWIZ 1.2 e successivi, ma abbia il .h precedente (addUsrScreen nell vecchie versioni aveva un solo parametro).
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Nov 11, 2013, 01:35 pm
Ho scaricato il pacchetto trovato a questo indirizzo:
https://github.com/brunialti/MENWIZ (https://github.com/brunialti/MENWIZ)

E' questo il punto a cui ti riferisci?
Code: [Select]
class menwiz{
public:
           menwiz();
  void     begin(void *,int, int);
  void     addSplash(char *,int);
  void     addUsrScreen(void (*f)(), unsigned long);
  void     addUsrNav(int (*f)(), int);
  void     setBehaviour(MW_FLAGS,boolean);
  _menu*   addMenu(int, _menu *, MW_LABEL);
  void     draw();
  void     drawUsrScreen(char *);       //draw user screen(s)
  int      getErrorMessage(boolean); //if arg=true, err message is printed to the default Serial terminal, otherwise the function returns error code only
  int      freeRam();
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: pesie on Nov 11, 2013, 02:09 pm
Update:
ho riscaricato la libreria e l'ho copiata nuovamente nell'apposita cartella e adesso non ho più problemi di compilazione. Si vede che avevo incasinato io qualcosa...  :smiley-red:
Grazie per l'aiuto.
Appena riesco carico il programma su Arduino e vedo cosa succede.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Pippo89 on Nov 13, 2013, 01:30 pm
Ciao a tutti, sono nuovo nel mondo arduino e sto cercando di creare un'interfaccia per controllare delle pompe e delle elettrovalvole in intervalli di tempo definiti. L'interfaccia mi serve proprio per impostare questi intervalli di tempo, ovvero ho delle semplici variabili che se modificate mi cambiano le tempistiche del dispositivo. Quello che vorrei fare è dare all'utente del dispositivo la possibilità di impostare numericamente i valori delle variabili temporali senza ogni volta andare a modificare le variabili nello sketch e caricarlo su arduino tramite usb. Da quello che ho letto ancora non ho capito se questa operazione è eseguibile tramite libreria menwiz….Spero di essere stato più o meno chiaro, qualcuno può darmi una mano? Grazie mille a tutti
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: alfio76 on Feb 17, 2014, 09:25 pm
Ciao,
ho problemi a compilare la libreria menwiz con ide 1.5.5, qualcuno è riuscito a risolvere il problema?
Scaricando il pacchetto completo di menwiz ci sono anche le librerie per il display, gia quello non va, questo l'ho baypassato ma mi ha dato un errore nel file fastio non conosceva la variabile _BV tolta anche quella, ma adesso il risultato è:

Code: [Select]
Arduino:1.5.5-r2 (Windows 7), Scheda:"Arduino Due (Programming Port)"

C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp: In member function 'void menwiz::drawMenu(_menu*)':
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:376: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:409: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:410: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:418: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:419: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:423: error: 'dtostrf' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:424: error: 'dtostrf' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:428: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:429: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp: In member function 'void menwiz::drawVar(_menu*)':
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:512: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:520: error: 'itoa' was not declared in this scope
C:\Users\Documents\Arduino\libraries\menwiz\MENWIZ.cpp:534: error: 'dtostrf' was not declared in this scope

  "

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 03:05 pm
Con la 1.5.5. e la 1.5.6r2 non ci sono problemi, nel senso che io compilo senza problemi...
Gli errori sembrano dovuti al fatto che non trova le funzioni che sono contenuti nella libreria di base del C K&R stdio.
Hai per caso toccato qualcosa negli include della libreria?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 09, 2014, 03:08 pm

Con la 1.5.5. e la 1.5.6r2 non ci sono problemi, nel senso che io compilo senza problemi...
Gli errori sembrano dovuti al fatto che non trova le funzioni che sono contenuti nella libreria di base del C K&R stdio.
Hai per caso toccato qualcosa negli include della libreria?


Occhio brunialti ... Arduino DUE e ... per SAM in Arduino ... non c'è la AVR libc (... non per nulla si chiama AVR libc) ...  :smiley-roll:

Credo di aver letto che qualcuno l'abbia compilata per SAM ... ma bisogna cercarla e vedere come importarla ... ;)

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 03:23 pm
Giusto... Non avevo notato che compilava per la Due.
Per itoa ho un buona referenza, ma non so se per le altre funzioni di stdio che non trova:

http://forum.arduino.cc/index.php?topic=138544.0;wap2
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 03:34 pm
accidenti... non ho una due... ma se qualcuno mi fa sapere se il problema verrà o meno risolto nella DUE posso eventualmente modificare il codice di MENWIZ e riscrivere le funzioni non presenti (solo itoa e dtostr ?)...
Fatemi sapere.

ciao
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 09, 2014, 03:53 pm
Mah ... c'è stato molto poco in passato e ... non so se ci sarà qualcuno che investirà ancora del tempo sulla DUE, specie ora che c'è da dedicarsi al supporto della TRE e della Galileo ...  :smiley-roll:

Occorrerebbe prendere libc (http://www.gnu.org/software/libc/libc.html) e riuscire a compilarla per SAM ...
... ma penso sia un bel lavoraccio.

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 04:18 pm
insomma.. la due la dichiari morta ... :-)
Per la Galileo mi sembra che il supporto sia poco e non venga da arduino.cc ...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 09, 2014, 04:49 pm

insomma.. la due la dichiari morta ... :-)
Per la Galileo mi sembra che il supporto sia poco e non venga da arduino.cc ...


Mah ... trovami chi ancora investe delle risorse nello sviluppo della DUE ...  :smiley-roll:

La Galileo dovrebbe essere supportata direttamente da Intel credo :)

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 04:55 pm
Ma non so. A me non ha mai convinto, ma non so perchè.
Sono pieno di uno, yun, galileo ma la due ... proprio non mi è venuto di comprarla...
E la tre non mi scalda molto il cuore...
Per me perfetta sarebbe un ayun con il doppio di memoria...
La galileo non è male ma la trovo immatura e la distro yocto a me non piace...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 09, 2014, 05:12 pm
Hai visto QUESTE (http://mbed.org/platforms/?tvend=10) ???  Costano 11 US$ e sono simpaticissime ... ;)

Guarda che caratteristiche la F401RE (http://mbed.org/platforms/ST-Nucleo-F401RE/)  :D

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 05:24 pm
Orco... non mi tentare :-)
11 usd ... ncpc  (non ci posso credere!)
Ma le conosci ? che ambiente/ide usano ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 09, 2014, 05:37 pm

Orco... non mi tentare :-)
11 usd ... ncpc  (non ci posso credere!)
Ma le conosci ? che ambiente/ide usano ?


Purtroppo (... perché a me non è che piace molto come idea) usano un ambiente on-line ... c'accedi, a seconda della board, da QUI (http://www.st.com/stonline/stappl/productcatalog/app?page=partNumberSearchPage&levelid=LN1847&parentid=1887&resourcetype=SW)

Sono comunque delle belle bestiole ... ad un prezzo veramente contenuto ... ;)

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 09, 2014, 05:40 pm
noo... non posso. troppo anarchico per accettare un online ... :-)
ma non ci sono alternative ? mi sembra impossibile...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 09, 2014, 05:56 pm

ma non ci sono alternative ? mi sembra impossibile...


Magari  :D ... se le trovi fammi un fischio ;)

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 09, 2014, 11:41 pm
CIao ... qualcuno di voi ha un codice di esempio in cui utilizza questa bellissima libreria ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 10, 2014, 07:34 am
... sono nella libreria, insieme ad un manuale "Quick tour"...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 10, 2014, 07:36 am
nonchè in un mio post di poco precedente...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 10, 2014, 09:30 am
Ciao, quello che vorrei fare è la seguente cosa:

                                                                                              Menu:

Set Temperature:                                        Set Alarm:

°C oppure °F                                                        impostare orario dal menu set alarm

Io vorrei capire come da menu mi converta la temperatura da C a F, cioè passargli degli input da menu, mi linkate qualche esempio easy da capire come funziona ???? Grazie  ;)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 10, 2014, 09:39 am

Io vorrei capire come da menu mi converta la temperatura da C a F, cioè passargli degli input da menu, mi linkate qualche esempio easy da capire come funziona ???? Grazie  ;)


Scusa ma non sarà certo il "menu" a fare le conversioni ...

... in funzione della voce scelta nel menu, ti segnerai in una variabile se devi far vedere le temperature in °C o in °F e poi, nel programma, controllando detta variabile, farai tu le dovute conversioni.

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 10, 2014, 10:06 am
SI ok sono d'accordo, io creo due submenu C e F, ma il codice per la conversione lo metto nel submenu e poi faccio print ?? mi mandate qualche vostro esempio di codice ?
Title: Nuova versione 1.3.2!
Post by: brunialti on Mar 10, 2014, 03:45 pm
Nel primo post di questo topic ho inserito la nuova versione della libreria.
E' ora possibile anche inserire ed editare un campo di tipo testuale, creare utenti e rendere o meno visibili i menu agli utenti definiti.
Il manuale non è aggiornatissimo ma ci sto lavorando prima di pubblicare su Github.
E' anche possibile salvare/leggere la eeprom con un offset (variabile eeprom_offset della classe menwiz). Ma questa possibilità non l'ho testata a fondo (diciamo che è un "internal" :-) )
In teoria i prossimi passi sono creare dei tipi speciali di variabili editabili: data, pwd.
E modificare il codice per renderlo compatibile con la due (ma vale lo sforzo ?).

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 10, 2014, 04:40 pm
ma per fare quello che voglio io ? cioè cambiare il valore dal menu e che rimanga impsotato ? ad esempio impostare il massimo da menu.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 10, 2014, 04:55 pm
puoi usare una variabile di tipo text, editabile (ma si può usare solo con 6 bottoni o device che simulano l'uso di 6 buttoni, come per esempio un keypad). Ma la gestione del campo immesso dipende dal tuo sketch.
Per cambiare un valore numerico (integer, float) o booleano puoi usare gli altri tpi di variabile.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 11, 2014, 11:30 am
Nessuno ha un esempio con qualche campo editabile ?  ;)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 11, 2014, 03:09 pm
in allegato un esempio.
Funziona con una keypad 4x4 e la libreria standard Keypad.h
La libreria versione 1.3.2 la trovi nel primo post di questo topic
Leggi l'intestazione.

Nello sketch c'è un esempio di tutti i tipi dati e di quasi tutte le opzioni. Molte sono commentate per non complicare lo sketch
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 11, 2014, 09:28 pm
Ciao, ho letto il tuo codice e ti ringrazio sto capendo di più, ti volevo chiedere:

facendo       

s2=menu.addMenu(MW_VAR,s1,F("byte var"));        //add a terminal node (that is "variable");
          s2->addVar(MW_AUTO_BYTE,&b,25,254,10);         //create a variable of type "byte"...

in questo modo creo una variabile di tipo byte da 25 a 254 a passi di 10, ma qualìè il nome della variabile ? Mettiamo caso che io da menu voglio impostare la dimensione di x, allora vorrei una variabile di tipo int e agendo sul menu con le freccie UP e DOWN mi incrementi questo valore e me lo salvi nella variabile "dimensione_x", come posso adattare il codice ? Questo è quello che vorrei fare .. forse dall'inizio non mi sono spiegato bene. Sai se  stato fatto un progetto con la tua libreria in cui si fa uso del menu e correlato da schematici di arduino per il progetto ?

grazie mille  :smiley-sweat:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 11, 2014, 09:42 pm
b la variabile è b...
E' una variabile definita nel tuo sketch e passata a Menwiz per referenza (&b) e non per valore.
Menwiz permette di modificare il valore di b (da 24 a 254 a passi di 10 ...). in qualunque punto del tuo codice puoi accedere al valore (eventualmente modificato) di b...

Se vuoi trattare un avariabile integer (ma c'è un esempio nello sketch che ti ho mandato)
Code: [Select]
int dimensione_x; //deve essere di tipo global (furi da setup e da loop)
.....
s2=menu.addMenu(MW_VAR,s1,F("integer var"));        //add a terminal node (that is "variable");
         s2->addVar(MW_AUTO_INT,&dimensione_x,25,254,10);         //create a variable of type "integer"...


progetti credo ce ne siano tanti (la libreria è stata scaricata qualche migliaio di volte), Ma che te ne fai di schemi (elettronici) di progetti fatti da altri ? Menwiz non entra nel merito della gestione di componenti esterni (Sensori motori ecc...). Quello è compito tuo ...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 11, 2014, 10:55 pm
Si infatti, era per vedere come gestire il menu. Ma nel caso avessi un LCD 20x4 i menu come vengono visualizzati ? uno sotto l altro fino alla 4 riga o sono riga per riga ?

Per schema intendendo uno schema base di collegamento bottoni - lcd per chi non ha lo shield tutto ocmpreso ;) ...

Se lo avete me lo mandate ?  :smiley-red:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 12, 2014, 08:30 am
Sono supportati lcd di tutti i formati. Si dichiara il numero delle colonne e delle righe con la begin.
I menu usano tutto lo spazio disponibile, scrollando se necessario. Ci sono modalità di visualizzazione opzionali, per esempio per le liste di opzioni lunghe (su più colonne)
Ci sono piccole differenze per lcd con sole due linee, per adattare la visualizzazione.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 09:07 am
Che dire .. vi ringrazio e non mi manca altro che iniziare a sperimentare la gesione del mio lcd retroilluminato blue.  :smiley-surprise:

Mi potete postare uno schema di collegamento dei bottoni ? Se volessi usare un rotary encoder ?  ]:D
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Mar 12, 2014, 09:25 am
Per domande che non riguardano specificatamente la libreria apri un topic nella sezione Generale, oppure in Hardware o Software.
Se fai una ricerca sul forum (http://forum.arduino.cc/index.php?action=search;advanced (http://forum.arduino.cc/index.php?action=search;advanced)), su google o nel playground (http://playground.arduino.cc/ (http://playground.arduino.cc/)) troverai tantissimi esempi.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 10:08 am
Io vorrei uno schema di collegamento lcd - bottoni su breadboard per capire come gestire i 6 button per il menu.

Grazie ragzzi del supporto, vi devo un caffèè !!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Mar 12, 2014, 10:50 am
bassfender ...
... cosa c'è che non ti è chiaro in quello che ha scritto qua sopra Paolo :


Per domande che non riguardano specificatamente la libreria apri un topic nella sezione Generale, oppure in Hardware o Software.
Se fai una ricerca sul forum (http://forum.arduino.cc/index.php?action=search;advanced (http://forum.arduino.cc/index.php?action=search;advanced)), su google o nel playground (http://playground.arduino.cc/ (http://playground.arduino.cc/)) troverai tantissimi esempi.


... quindi ...  :smiley-roll:

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 11:02 am
Ciao Guglielmo, io volevo capire come la libreria vede i bottoni, cioè la libreria è predisposta per i 4 o 6 bottoni, ma dove li dichiara i pin ??? un semplice schema non sarebbe male allegato alla libreria.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 11:20 am
questo è il codice in libreria:

// BUTTON CODES
// ---------------------------------------------------------------------------
#define MW_BTNULL      0   //NOBUTTON
#define MW_BTU         2   //UP
#define MW_BTD         3   //DOWN
#define MW_BTL         4   //RIGTH
#define MW_BTR         5   //LEFT
#define MW_BTE         6   //ESCAPE
#define MW_BTC         7   //CONFIRM

// ------------------


i numeri si riferiscono ad i pin digitali di arduino ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 12, 2014, 11:43 am
suggerimento:
non saltare le tappe. Scordati per il momento menwiz. Fai uno sketch semplice semplice con un bottone e un led.
Quando funziona ritorna a considerare la libreria.  Questo veramente è un topic dedicato alla sola libreria e non un corso introduttivo ad Arduino. Dico questo non per scoraggiarti nè in tono polemico, ma solo perchè se non apprendi le basi non ti puoi muovere su progetti più complessi.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 11:47 am
grazie, ma io tempo fa con arduino riuscivo a gestire schede ethernet e a collegarmi da remoto, è solo che per qunato ho visto la tua libreria legge lo stato analogico del PIN A0 e quindi non usa pin digitali .. o mi sbaglio ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 12, 2014, 12:25 pm
i pushbutton usano i pin analogici.
La libreria buttons.h fornita insieme alla libreria menwiz gestisce i bottoni.
Bisogna mappare i pin analogici utilizzati e dichiararli alla libreria menwiz, che poi chiamerà la libreria buttons a sua volta.
Tale mappatura si fa con la chiamata
Code: [Select]
menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);

dove si passano i "numeri" dei pin analogici che si sono utilizzati per i bottoni.

tutorial base per 1 pushbutton
http://arduino.cc/en/Tutorial/Button#.UyBFAfl5NOg
più bottoni:
http://www.ladyada.net/learn/arduino/lesson5.htm
Se poi si vuole utilizzare un altro device invece dei semplici bottoni (p.es. un keypad) ... bisogna legegre il manuale e fare una ricerca sul forum o leggere anche questo topic, un paio di pagine indietro...
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 12:41 pm
quindi in:

menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);

metti il valore di resistenza associato ad ogni bottone ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 12, 2014, 01:08 pm
... metti, come suggerito dal nome dei parametri, il pin di Arduino su cui attesti ciascun pushbutton.
Comunque se non provi a usare i pushbutton indipendentemente da menwiz, capendo come funzionano e come usare i pin analogici di Arduino, seguendo i link che ti ho dato o altri che troverai googlando è inutile continuare a chiedere aiuto su questo topic.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 12, 2014, 04:49 pm
un ultimissima cosa, leggendo su internet il define si usa per definire una costantname in un constant value,

quando fai define UP_Button_Pin 9 non stai definendo il pin a cui è collegato il pulsante di up ? E quindi non sono più analogici ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 12, 2014, 08:02 pm
ouch! I pushbutton sono connessi con pin digitali. In alcuni casi i pin analogici vengono usati come digitali quando necessario.... come sto facendo io in questo momento ..) ma questa è un'altra storia....
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Mar 12, 2014, 11:22 pm
credo si stia incasinando sui due metodi possibili per usare dei bottoni. Visto che lui parla di resistenze credo si riferisca all'uso di bottoni paralleli ad una serie di resistenze, e la lettura degli stessi con un unico incresso analogico.
La tua libreria gestisce gia' di per se questo tipo di connessione ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 13, 2014, 08:09 am
la prima cosa che fa menwiz "standard" è quella di verificare se e quale bottone è stato premuto, tramite la seguente funzione "built in":

Code: [Select]
int menwiz::scanNavButtons(){

  if(btx->BTU.check()==ON){
    return MW_BTU;}
  else if (btx->BTD.check()==ON){
    return MW_BTD;}
  else if (btx->BTL.check()==ON){
    return MW_BTL;}
  else if (btx->BTR.check()==ON){
    return MW_BTR;}
  else if (btx->BTE.check()==ON){
    return MW_BTE;}
  else if (btx->BTC.check()==ON){
    return MW_BTC;}
  else
    return MW_BTNULL;
  }

Per far conoscere a menwiz quali sono i pin che utilizzo per i bottoni (mappatura) devo usare in setup la seguente funzione:
menu.navButtons(UP_BUTTON_PIN,DOWN_BUTTON_PIN,LEFT_BUTTON_PIN,RIGHT_BUTTON_PIN,ESCAPE_BUTTON_PIN,CONFIRM_BUTTON_PIN);


se un utente invece dei bottoni "standard" vuol usare una altra modalità/device deve semplicemente riscrivere una funzione come la precedente che ritorni gli stessi valori con logica di gestione "custom". Per esempio se voglio usare una keypad 4x4  scriverò la seguente funzione


Code: [Select]
int menuKeys()
{
  char keyPressed = customKeypad.getKey(); // read the keypad to see if a key has been pressed
 
  switch (keyPressed)
  {
    case NO_KEY:
      return MW_BTNULL; // no key pressed
    case '2':
      return MW_BTU; // key 2 pressed for direction UP
    case '8':
      return MW_BTD; // key 8 pressed for direction DOWN
    case '4':
      return MW_BTL; // key 4 pressed for direction LEFT
    case '6':
      return MW_BTR; // key 6 pressed for direction RIGHT
    case '*':
      return MW_BTE; // key * pressed for ESCAPE
    case '#':
      return MW_BTC; // key # pressed for CONFIRM
  }
}

per "dire" a menwiz che deve usare la mia funzione e non quella "built in" in setup devo usare al posto della chiamata a navButtons di cui sopra il metodo
menu.addUsrNav(menuKeys,6);

Questo fa si che menwiz non chiami più la funzione "built in" ma chieami quella definita dall'utente.

Un caso particolare è quello in cui per risparmiare pin di Arduino si utilizzi un solo pin analogico associndo a ciascun bottone una resistenza di valore noto e differente per ciascun botton, che permette, misurando il valore del pin analogico, di capire quale tasto è stato premuto sulla base del valore di input. esempi di utilizzo di questo metodo ce ne sonmo nei topics su menwiz in inglese, con esempi di scrittura della funzione "custom" che comunque è abbasAtnza semplice (come vedi tutto si riduce a poche righe di codice). Io non ho però un esempio disponibile, ma ne sono stati messi in linea.

Spero di essere stato chiaro.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 13, 2014, 08:46 am
Perfetto ... è quello che cercavo di capire ... mi leggo il forum in inglese.

Testato aveva capito la mia esigenza, ovvero usare un pin analogico per non avere troppi pin occupati per una semplice lettura di tasto. Grazie.Mille.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 13, 2014, 01:28 pm
Vai in questo topic.
potrai trovare sia il codice che lo schema. E' per 4 bottoni, ma estenderla dovrebbe essere banale.
C'è anche il debouncing.

http://forum.arduino.cc/index.php?topic=122636.15
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 13, 2014, 02:40 pm
Perfetto :) ... ache se nell esempio iniziale mettono:

#define KEY_UP 1
#define KEY_CONFIRM 2
#define KEY_DOWN 3
#define KEY_ESCAPE 4
#define KEY_NONE 11

e poi alla fine del post non lo mettono, se è analogico non aveva senzo mettere questi define.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Mar 13, 2014, 02:50 pm
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...)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 16, 2014, 11:22 am
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:
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: bassfender on Mar 16, 2014, 02:40 pm
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. :(
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Mar 16, 2014, 08:34 pm
spetta spetta ti stai incasinando

Quote
LCD_seriale != LCD_I2C != LCD_4bit


spero di essere stato chiaro  :)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: rioch87 on Jun 02, 2014, 12:45 pm
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!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Jun 02, 2014, 01:08 pm
@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
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jun 02, 2014, 03:14 pm
... 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?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: rioch87 on Jun 02, 2014, 03:27 pm

... 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...  :~
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jun 02, 2014, 03:33 pm
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
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: rioch87 on Jun 02, 2014, 11:48 pm

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.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: menniti on Jun 03, 2014, 07:49 am
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
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: vic_20 on Jun 12, 2014, 11:04 pm
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
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: MarioMario on Jul 21, 2014, 10:11 pm
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
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: MarioMario on Jul 21, 2014, 10:17 pm
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
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: PaoloP on Jul 22, 2014, 11:18 am
Non ricordo i nomi dei membri della classe, ma attento alle maiuscole e alle minuscole, il C è sensibile anche a questo aspetto.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: MarioMario on Jul 22, 2014, 02:03 pm
Grazie PaoloP, ma ho semplicemente provato a compilare l'esempio fornito conla libreria, non ho modificato il codice.
Cosa può essere?

Grazie,
Mario
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunialti on Jul 23, 2014, 03:30 pm
verifica in MENWIZ.h la seguente riga

Code: [Select]
//#define BUTTON_SUPPORT   //comment itif you do'nt want to use the Button methods!

in alcuni esempi c'è del codice inserito per la gestione di una keyboard in questi casi per risparmiare memoria si commenta la riga di cui sopra per non compilare le funzioni che non si usano.. Nel caso devi togliere il commento.
Spero  di essere stato utile
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: MarioMario on Jul 23, 2014, 10:38 pm
Grazie brunialti,
ho controllato la libreria e in MENWIZ.h era commenta la riga che mi hai detto.

Ho tolto il commento, chiuso, riaperto l'IDE ma il problema persiste, questo è quello che viene fuori quando compilo:

Code: [Select]
Test_all_var_types:77: error: 'class menwiz' has no member named 'navButtons'
Test_all_var_types:84: error: expected unqualified-id before '(' token
Test_all_var_types:84: error: expected primary-expression before 'char'


Sto usando il file di esempio "Test_all_var_type con IDE 1.0.4

Cosa può essere?

Grazie,
Mario
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: niki77 on Oct 28, 2014, 10:33 am
Buongiorno a tutti,

Ho scoperto che purtroppo questa bella libreria non ha supporto nativo per i dati di tipo unsigned int.
Non funziona nemmeno il tipo di dati list associato ad una variabile di tipo byte, ma questo è un problema minore per il mio uso.
Ad occhio mi sembra di aver visto che implementare la gestione del tipo unsigned int su addvar non è poi così banale, qualcuno saprebbe indicarmi un possibile workaround ?
Grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Guidus93 on Nov 18, 2014, 08:18 pm
Sto riscontrando difficoltà ad aggiungere alla UsrScreen la data e l'ora.

Facendo così funziona ma quando le ore, o i minuti sono <10 non ho modo di stampare lo 0.
Code: [Select]
void msc(){
  DateTime now= RTC.now();
  int hm,tm;
    static  char buf[7];
  strcpy(menu.sbuf,"GrowRoom Controller"); //1st lcd line
  strcat(menu.sbuf,"\n Temperatura: ");strcat(menu.sbuf,itoa((int)(tm),buf,10));strcat(menu.sbuf,"C");//2nd lcd line
  strcat(menu.sbuf,"\n   Umidita' : ");strcat(menu.sbuf,itoa((int)(hm),buf,10));strcat(menu.sbuf,"%");//3rd lcd line
  strcat(menu.sbuf,"\n ");strcat(menu.sbuf,itoa((int)(now.hour()),buf,10));strcat(menu.sbuf,":");strcat(menu.sbuf,itoa((int)(now.minute()),buf,10));strcat(menu.sbuf,"  ");
  strcat(menu.sbuf,itoa((int)(now.day()),buf,10));strcat(menu.sbuf,"/");  strcat(menu.sbuf,itoa((int)(now.month()),buf,10));strcat(menu.sbuf,"/"); strcat(menu.sbuf,itoa((int)(now.year()),buf,10));//4th lcd line
  menu.drawUsrScreen(menu.sbuf);}


Altri metodi?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: vitoos on Mar 09, 2015, 12:16 pm
Salve a tutti, da come ho capito la libreria liquidcristal i2c permette di gestire anche gli lcd seriali a 4 bit ma non capisco come devo fare per dirgli che non è un i2c, come devo fare?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: leo72 on Mar 09, 2015, 04:19 pm
Non capisco se la domanda è pertinente con la discussione o meno... Hai problemi con la libreria Menwiz oppure non riesci a usare il display?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Massimog on Mar 20, 2015, 04:12 pm
è possibile usare questa libreria con display 40x4 che ha 2 enable pin?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: fiodavid on May 18, 2015, 12:59 pm
scusate la domanda?
questa libreria la posso utilizzare anche con lo shield Keypad? nel senso, siccome i tasti sono collegati tutti a A0 con partitori, come gestisce la cosa la libreria?

grazie

ciao
fiodavid
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: linvswin on Sep 01, 2015, 03:55 pm
Salve a tutti,

volevo chiedere se è possibile creare le label dei menu in modo dimanico. Sto cercando di fare una cosa del genere:
Quote
r = tree.addMenu(MW_ROOT, NULL, F("Menu"));
s1 = tree.addMenu(MW_SUBMENU, r, F("Input"));

for (int i = 1; i < 10; i++)
{
     s2 = tree.addMenu(MW_VAR, s1, F("Input "+i));
     ........
}
e cioè 10 voci di menu con le stesse impostazione. Mi da questo errore di compilazione:
Quote
quick_tour.ino: In function 'void setup()':
/home/peppe/Scaricati/Arduino/arduino-1.6.4/hardware/arduino/avr/cores/arduino/WString.h:38:74: error: initializer fails to determine size of '__c'
 #define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
                                                                          ^
quick_tour.ino:69:32: note: in expansion of macro 'F'
/home/peppe/Scaricati/Arduino/arduino-1.6.4/hardware/arduino/avr/cores/arduino/WString.h:38:74: error: array must be initialized with a brace-enclosed initializer
 #define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
                                                                          ^
quick_tour.ino:69:32: note: in expansion of macro 'F'
se provo così :

Quote
s2 = tree.addMenu(MW_VAR, s1, F(i));
stesso errore. Compila solo se aggiungo il cast (MW_LABEL) al posto della F(). però poi sul display compaiono caratteri a caso.

Premetto che l'esempio funziona con i valori statici, ( se metto s2 = tree.addMenu(MW_VAR, s1, F("Input"));

C'è qualche soluzione?

Peppe
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: marco3020 on Nov 20, 2015, 09:18 am
Buongiorno a  tutti esiste un modo di usare la libreria PCF con questa libreria?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: davide220 on Dec 10, 2015, 07:20 pm
Ho provato a caricare il file su Arduino ma da questo errore:

menu:15: error: 'menuChangeEvent' was not declared in this scope

 MenuBackend menu = MenuBackend(menuUseEvent,menuChangeEvent);

                                             ^

exit status 1
'menuUseEvent' was not declared in this scope

Trovata libreria non valida in C:\Program Files (x86)\Arduino\libraries\MenuBackend_1-0: C:\Program Files (x86)\Arduino\libraries\MenuBackend_1-0
Trovata libreria non valida in C:\Program Files (x86)\Arduino\libraries\MenuBackend_1-0: C:\Program Files (x86)\Arduino\libraries\MenuBackend_1-0

Premetto che ho installato la libreria nella cartella come ho fatto per tante altre librerie aggiuntive.

Come risolvo? Grazie
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: carlottavalente on May 29, 2016, 11:47 am
salve ragazzi sono due giorni che cerco di integrare questo menu' al mio scketc senza ottenere risultati solo tantissimi errori mi aiutate?

Code: [Select]
#include <LiquidCrystal.h>



#define STEP_PIN   54
#define DIR_PIN    55
#define ENABLE_PIN  38
#define X_MIN 3 // finecorsa giu D3
#define X_MAX 2 // finecorsa su D2
#define pulsante_azzeramento 14 // pin Y_MIN
#define pulsante_start 15 // pin Y_MAX
#define pulsante_reset 18 // pin Z_MIN
#define led 13 // pin LED
#define Relay 24

int ritardo_veloce = 360 ;
int velocita = 0 ;
unsigned int distanza = 0;



LiquidCrystal lcd(46, 48, 56, 60, 61, 62);

void setup() {
 

lcd.begin(16,2);

 lcd.setCursor(0,0); // vai alla posizione 0,0 dell'LCD...
lcd.print("  Carlotta ");
lcd.setCursor(0,1); // vai alla posizione 0,1 dell'LCD...
lcd.print("  Valente");
delay(2000);
lcd.clear();

lcd.setCursor(0,0); // vai alla posizione 0,0 dell'LCD...
lcd.print("   ATTENZIONE");
lcd.setCursor(0,1); // vai alla posizione 0,0 dell'LCD...
lcd.print(" AZZERARE ASSE");
delay(4000);
lcd.clear();

 
 
 
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(ENABLE_PIN, OUTPUT);
  pinMode(X_MIN, INPUT_PULLUP);
  pinMode(X_MAX, INPUT);
  pinMode(pulsante_azzeramento, INPUT_PULLUP);
  pinMode(pulsante_start , INPUT_PULLUP);
  pinMode(pulsante_reset, INPUT_PULLUP);
 pinMode(Relay, OUTPUT);
  digitalWrite(ENABLE_PIN, HIGH );
// attachInterrupt(digitalPinToInterrupt(X_MIN), err_finecorsa, LOW); // Interrupt per finecorsa basso
  pinMode(led, OUTPUT);
  digitalWrite(Relay, LOW );
}

void loop()
{
lcd.setCursor(0,1); // vai alla posizione 0,1 dell'LCD...
lcd.print("ASSE X 0,");
  if (digitalRead (pulsante_reset) == 0 ) {

//AZZERAMENTO
   
    pos_iniziale() ; // esegue procedura di posizionamento iniziale al fine corsa
   
     digitalWrite(Relay, LOW );
    delay(1000);
    step(STEP_PIN, 7166, DIR_PIN, true, velocita); //esegue 7166 passi in avanti veloce
 
  attachInterrupt(digitalPinToInterrupt(X_MIN), err_finecorsa, LOW); // riabilita interrupt basso
   digitalWrite(ENABLE_PIN, HIGH ); //disabilita ENABLE_PIN

lcd.setCursor(0,0); // vai alla posizione 0,0 dell'LCD... casomai cambia riga e colonna se serve
lcd.print("ASSE AZZERATO");


}
  if (digitalRead (X_MAX ) == 0 ) {
    // azzera l'asse sul display
 
  step(STEP_PIN, 7168, DIR_PIN, false, velocita); //esegue 10000 INDIETRO
  attachInterrupt(digitalPinToInterrupt(X_MIN), err_finecorsa, LOW); // riabilita interrupt basso
  lcd.setCursor(0,0); // vai alla posizione 0,0 dell'LCD... casomai cambia riga e colonna se serve
lcd.print("ERRORE ASSE");
 
  }

//LAVORO
 
  if (digitalRead (pulsante_start ) == 0 ) {
   delay (1000);
    // esegue ciclo
  digitalWrite(Relay, LOW );
delay(2000);
    step(STEP_PIN, 1133, DIR_PIN, true, 360); //esegue 1133 passi in avanti veloce
    step(STEP_PIN, 303, DIR_PIN, true, 1250); //esegue 303 passi in avanti lento
    step(STEP_PIN, 1436, DIR_PIN, false, velocita); //esegue 1436 passi in avanti
    delayMicroseconds(5);
   
    digitalWrite(ENABLE_PIN, HIGH ); //abilita ENABLE_PIN

digitalWrite(Relay, HIGH );
 delay(500);
 
   lcd.setCursor(0,0); // vai alla posizione 0,0 dell'LCD...
lcd.print("CICLO ESEGUITO");
delay(600);
  }
}

void step(int stepperPin, int steps, int dirPin, boolean dir, int velocita) {
  digitalWrite(dirPin, dir);
  delay(10);
  for (int i = 0; i < steps; i++) {
    digitalWrite(stepperPin, HIGH);
    delayMicroseconds(velocita);
    digitalWrite(stepperPin, LOW);
    delayMicroseconds(velocita);
     digitalWrite(ENABLE_PIN, LOW );  //abilita ENABLE_PIN

 distanza = i / 4 * 1.5 ; // calcoli la distanza in mm
lcd.setCursor(9,1); // vai alla posizione 9,1 dell'LCD...
lcd.print(distanza);
}
}

void pos_iniziale() {
  detachInterrupt(digitalPinToInterrupt(X_MIN)); // disabilita Interrupt basso
  digitalWrite(DIR_PIN, 0 );
  delay(10);
  while (digitalRead (X_MIN) == HIGH ) { // gira indietro fino al fine corsa
    digitalWrite(STEP_PIN, HIGH);

 delayMicroseconds(ritardo_veloce);
    digitalWrite(STEP_PIN, LOW);
   
 delayMicroseconds(ritardo_veloce);
     digitalWrite(ENABLE_PIN, LOW ); //abilita ENABLE_PIN
  }
}
void err_finecorsa() {
 



}   




io dovrei cambiare i valori di numero di step e velocita' a queste tre righe


[code step(STEP_PIN, 1133, DIR_PIN, true, 360); //esegue 1133 passi in avanti veloce
    step(STEP_PIN, 303, DIR_PIN, true, 1250); //esegue 303 passi in avanti lento
    step(STEP_PIN, 1436, DIR_PIN, false, velocita); //esegue 1436 passi in avanti
][/code]

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on May 31, 2016, 06:33 pm
@carlotta, purtroppo non conosco la libreria.
Mi pare tu hai nel codice di adesso una serie di pulsanti che dovrebbero fare quello invece vorresti fare con il menu ?
Io ti consiglio di NON partire a spron battuto cercando di mettere il tuo programma con il menu tutto in uno sketch.
Prova a fare un altro sketch con LCD e un menu base preso dai demo della libreria.
Secondo me vedendo un esempio semplice con dei menu dei demo riesci poi a capire dove mettere i pezzi di codice che ti servono per variare velocità e step

P.S. i menu devono essere pilotati da almeno 4 bottoni, mi pare (su,giu,dx,sx). Li hai previsti ?
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on May 31, 2016, 07:04 pm
una donna sul forum ?
scusa l'OT ma e' una rarita'.
Benvenuta  :D

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: carlottavalente on May 31, 2016, 09:31 pm
mmmmmmmm..... e strano?

dai ragazzi qualcuno puo' darmi una mano?  :'(
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Jun 01, 2016, 05:09 am
Non posso che quotare quanto già suggeritoti da nid69
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: carlottavalente on Jun 01, 2016, 11:09 am
buongiorno ragazzi non riesco a superare questo scoglio


Documents\Arduino\libraries\MENWIZ\MENWIZ.cpp:720:12: warning: case label value exceeds maximum value for type [enabled by default]

       case 900: Serial.println(F("E900-Out of memory"));break;


            ^
AppData\Local\Temp\arduino_modified_sketch_246494\Test_all_var_types.ino:7:0:
Documents\Arduino\libraries\MENWIZ/MENWIZ.h:32:17: fatal error: LCD.h: No such file or directory

 #include <LCD.h>

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: carlottavalente on Jun 01, 2016, 11:48 am
@nid69 utilizzo un keypad con 6 tasti collegati in analogico display 16x2
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunello22 on Jun 01, 2016, 12:09 pm
Quale LCD, questo

(http://www.dfrobot.com/wiki/images/thumb/1/1e/Arduino_Shield8.png/350px-Arduino_Shield8.png)
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: carlottavalente on Jun 01, 2016, 01:07 pm
si esatto... collegato ai pin 46, 48, 56, 60, 61, 62 della ramp 1.4 i tasti al pin 13 che corrisponde ad un pin analogico
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: brunello22 on Jun 01, 2016, 01:11 pm
ti rispondo nel tuo topic, non inquiniamo questo

http://forum.arduino.cc/index.php?topic=403080.0
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Teo2086 on Sep 12, 2016, 11:57 pm
Ciao a tutti, vorrei realizzare un menù sul LCD che controlla una centralina per un miscelatore che sto realizzando.
Ho trovato questa libreria ma non riesco a far funzionare nemmeno un esempio...

Il problema è proprio alla base il collegamento con LCD.
Ho aggiunto le librerie extra che richiede, quelle che si trovano nello zip REQUIRED_LIBRARIES.zip ma anche con quelle nulla da fare.

Prima avevo un errore sul file I2CIO.cpp che cercava #include <../Wire/Wire.h> corretto in wire.h compila correttamente ma se carico su Arduino LCD inizia a flashare e non scrive nulla.

LCD che vorrei usare è questo LCD 20x4 con controller PCF8574AT (http://www.futurashop.it/display-lcd-20x4-con-interfaccia-i²c-2846-lcd20x4ai2c)

Questo il codice che riesco a compilare ma che manda in crisi l'LCD....

Code: [Select]

#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>

#define BACKLIGHT_PIN     13

LiquidCrystal_I2C lcd(0x3F);  // Set the LCD I2C address

//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE);  // Set the LCD I2C address


// Creat a set of new characters
const uint8_t charBitmap[][8] = {
   { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 },
   { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 },
   { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 },
   { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 },
   { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 },
   { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 },
   { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 },
   { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 }
   
};

void setup()
{
   int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0]));

  // Switch on the backlight
  pinMode ( BACKLIGHT_PIN, OUTPUT );
  digitalWrite ( BACKLIGHT_PIN, HIGH );
 
  lcd.begin(20,4);               // initialize the lcd

   for ( int i = 0; i < charBitmapSize; i++ )
   {
      lcd.createChar ( i, (uint8_t *)charBitmap[i] );
   }

  lcd.home ();                   // go home
  lcd.print("Hello, ARDUINO "); 
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print (" FORUM - fm   ");
  delay ( 1000 );
}

void loop()
{
   lcd.home ();
   // Do a little animation by writing to the same location
   for ( int i = 0; i < 2; i++ )
   {
      for ( int j = 0; j < 16; j++ )
      {
         lcd.print (char(random(7)));
      }
      lcd.setCursor ( 0, 1 );
   }
   delay (200);
}


Qualcuno ha qualche idee su come posso risolvere???

Grazieeeeee
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: SquareBoot on Oct 27, 2016, 01:27 pm
Salve a tutti,
lavorando ad un progetto alquanto complesso, sto cercando di usare MENWIZ per gestire i menù di un LCD I²C. Scaricata l'ultima versione, nella guida PDF contenuta nello ZIP ho letto:

Quote
The following libraries have to be included in the sketch:
· "new" LiquidCrystal Library by Francisco Malpartida. This library supports I2c, 4, 8 wires and other
lcd devices. the library is a drop replacement for the standard lib LiquidCrystal e LiquidCrystal_I2C.
The latest version can be found at https://bitbucket.org/fmalpartida/newliquidcrystal/
wiki/Home.
· Buttons compact library by Franky (see also "1.4 How to save memory space." chapter)
· EEPROM library (one of Arduino the builtin libraries); (see also "1.4 How to save memory space"
chapter )
The first two libraries are provided inside the MENWIZ zip file and must be installed before the use of
MENWIZ.
Ho quindi decompresso REQUIRED_LIBRARIES.zip, prendendone le librerie e salvandole nella directory delle librerie assieme a MENWIZ. Siccome la "new" LiquidCrystal Library di Francisco Malpartida richiede (vedi sito libreria e guida PDF) che sia rimossa la libreria LiquidCrystal preinstallata (conflitto con i nomi dei file), ho fatto ciò. Non volendo cambiare il metodo di input (6 pulsanti con INPUT_PULLUP di default), ho aperto direttamente l'esempio quick_tour.ino; nella compilazione di quest'ultimo ho ricevuto un certo errore, descritto con precisione alla presente pagina: #include<..wire/wire.h> error using i2c lcd display (http://forum.arduino.cc/index.php?topic=385496.0). Sistemato l'errore come descitto da PaulS

Quote
Look at the I2CIO.cpp file. If it really says

Code: [Select]
#include <../Wire/Wire.h>
change it to

Code: [Select]
#include <Wire.h>
ho riavviato l'Arduino IDE 1.6.12 e ricompilato l'esempio. Questa volta l'errore non si è più presentato, anche se ne è giunto un altro, questa volta interno a MENWIZ, che purtroppo mi vedo costretto a non scrivere per non superare il limite di caratteri posto dal Forum. Se poi avete il coraggio e la voglia di leggere i logs, potete trovare 21 pagine di errori a catena QUI (https://docs.google.com/document/d/1AJ71hzDit0-BtvhXJz5rby9p4Lln-vdChQt3uTwjvCo/edit) (documento Google). L'errore rende quindi la libreria inutilizzabile su nessuna board.

Codice:
Code: [Select]
//The full code is in library example file Quick_tour.ino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>

// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BOTTON_PIN       9
#define DOWN_BOTTON_PIN     10
#define LEFT_BOTTON_PIN     7
#define RIGHT_BOTTON_PIN    8
#define CONFIRM_BOTTON_PIN  12
#define ESCAPE_BOTTON_PIN   11

menwiz tree;
// create lcd obj using LiquidCrystal lib
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;

  Serial.begin(19200);    
  tree.begin(&lcd,20,4); //declare lcd object and screen size to menwiz lib

  r=tree.addMenu(MW_ROOT,NULL,F("Root"));
    s1=tree.addMenu(MW_SUBMENU,r, F("Node1"));
      s2=tree.addMenu(MW_VAR,s1, F("Node3"));
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Option1"));
        s2->addItem(MW_LIST, F("Option2"));
        s2->addItem(MW_LIST, F("Option3"));
      s2=tree.addMenu(MW_VAR,s1, F("Node4"));
        s2->addVar(MW_AUTO_INT,&sp,0,120,10);  
    s1=tree.addMenu(MW_VAR,r, F("Node2"));
      s1->addVar(MW_ACTION,myfunc);
       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
  }

void loop(){
  tree.draw();
  }

void myfunc(){
  Serial.println("ACTION FIRED");
  }


Detto questo, ho aggirato il problema usando la versione 1.3.2 beta di MENWIZ.
Ho cancellato le vecchie REQUIRED_LIBRARIES per sostituirle con quelle della beta, ho aggiornato MENWIZ alla versione 1.3.2, sistemato nuovamente l'errore della libreria LCD (Wire.h) e aperto l'IDE. Ho copiato ed incollato l'esempio dal PDF della guida (guida per la beta), compilato e...

Code: [Select]
Uso la libreria Wire alla versione 1.0 nella cartella: C:\Users\Marco\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.14\libraries\Wire
Uso la libreria LiquidCrystal nella cartella: C:\Users\Marco\Desktop\Arduino\Arduino IDE\libraries\LiquidCrystal (legacy)
Uso la libreria Buttons nella cartella: C:\Users\Marco\Desktop\Arduino\Arduino IDE\libraries\Buttons (legacy)
Uso la libreria MENWIZ nella cartella: C:\Users\Marco\Desktop\Arduino\Arduino IDE\libraries\MENWIZ (legacy)
Uso la libreria EEPROM alla versione 2.0 nella cartella: C:\Users\Marco\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.14\libraries\EEPROM
exit status 1
'class menwiz' has no member named 'navButtons'


Errore alla riga dell'esempio
Code: [Select]
tree.navButtons(UP_BOTTON_PIN, DOWN_BOTTON_PIN, LEFT_BOTTON_PIN, RIGHT_BOTTON_PIN, ESCAPE_BOTTON_PIN, CONFIRM_BOTTON_PIN);

Come è possibile? In MENWIZ.cpp (v. 1.3.2) esiste veramente navButtons! Perfino nella guida (non quella vecchia, ovviamente) si fa riferimento a questa funzione!
Ringrazio in anticipo, nella speranza che qualcuno sia in grado di aiutarmi nella compilazione dell'esempio (beta o meno).
SquareBoot
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: nid69ita on Dec 06, 2016, 11:28 am
Se guardi dentro il file .h, vedrai che quel comando è opzionale:
#ifdef BUTTON_SUPPORT

infatti all'inizio del file .h si legge:
//#define BUTTON_SUPPORT     //comment if you do'nt want to use the Button methods!

Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: marco3020 on Dec 06, 2016, 11:40 am
Buongiorno a tutti ho una domanda per Brunialti la versione Menwizz che hai postato funziona con la ide 1.65 ? perche a me da tantissimi errori grazie in anticipo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: Bitsfromitaly on Jan 08, 2017, 04:23 pm
Buongiorno, sto dando un'occhiata ai vari metodi per gestire i menu su arduino ed ho incontrato questa libreria.

A me servirebbero le seguenti funzioni che non ho trovato esplicitamente supportate:

1. l'utente sceglie una funzione dal menu, avvio la funzione con visualizzazione a display di alcune funzioni, a funzione ultimata il menu ritorna visibile ed utilizzabile
2. una delle funzioni richiede l'avvio di un loop comandato da pulsante: da menu scelgo la funzione ed una volta avviata la comando con un'altra coppia di pulsanti (tipo start/stop) ... allo stop si torna al menu visibile ed utilizzabile.

Menwiz gestisce queste due funzioni?

Ringrazio anticipatamente!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: arduale on Apr 13, 2017, 04:20 pm
ciao a tutti,
vorrei chiedervi se secondo voi questa libreria potrebbe fare al caso mio, oppure se è sprecata, data la semplicità di quello che devo fare.

in pratica vorrei usare 2 pulsanti, uno per selezionare e uno per dare l'ok. ad ogni pressione del pulsante SEL, appaiono ciclicamente dei numeri, mentre quando premo OK, viene memorizzato il numero visualizzato in una variabile. serve per selezionare la freq di campionamento di un data logger che sto cercando di fare.

al momento ho quasi risolto con l'utilizzo di una funzione che usa digitalRead sui due pulsanti, ma ho ancora qualche problemino. vale la pena che mi metta a studiare questa libreria, second voi?

grazie!
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: testato on Apr 20, 2017, 07:50 pm
io direi di no, perche' il tuio caso e' molto semplice, ed in piu' questa libreria non viene aggiornata da tempo ed ha qualche rpoblema con i nuovi ide
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: DaddyLee on Dec 19, 2017, 08:04 pm
Buongiorno a tutti.

Intanto vorrei premettere che, per quanto non abbia saltato le tappe (uso del pulsante, accensione di un led, gestione di un display e via dicendo) sono assolutamente "ignorante" in materia.
ho trovato qualche giorno fa questa libreria e l'ho trovata utile per un piccolissimo progetto che ho in mente.
ma mi sono imbattuto fin da subito in un problema che, a quanto pare è banalissimo.

Il solo esempio che ho trovato in rete (e che ho per il momento copiato/incollato) prevede l'uso di un display (rs, en, D0-D4) e 6 pulsanti collegati sulla linea analogica.

poichè intendo utilizzare le 6 linee analogiche, ho pensato di passare a pulsanti collegati in digitale.
Ma davvero non riesco...

per cominciare, ho definito i pin sui quali collegherò i miei pulsanti

Code: [Select]
// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BOTTON_PIN 11
#define RIGHT_BOTTON_PIN 10
#define CONFIRM_BOTTON_PIN 9
#define ESCAPE_BOTTON_PIN 8


dopo aver creato la struttura del menu, ho scritto quanto segue:

Code: [Select]
menu.navButtons(UP_BOTTON_PIN, DOWN_BOTTON_PIN, CONFIRM_BOTTON_PIN, ESCAPE_BOTTON_PIN);
 menu.addUsrNav(menuKeys,4);(
 


se compilo in questo modo, mi restituisce:

test1:108: error: 'menuKeys' was not declared in this scope

Ho anche letto che, questa libreria non viene aggiornata e che potrebbe avere problemi con alcuni IDE (uso la ver.1.8.5 di arduino).

sapreste dirmi dove sbaglio?

Grazie in anticipo

DL

se invece inserisco i nomi dei pulsanti, come precedentemente dichiarato (X_BOTTON_PIN),
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Dec 19, 2017, 11:10 pm
>DaddyLee:  essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (http://forum.arduino.cc/index.php?topic=113640.0) (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO (http://forum.arduino.cc/index.php?topic=149082.0) ... Grazie.

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Jan 07, 2018, 06:53 pm
ATTENZIONE: la Libreria MENWIZ risulta avere problemi con le versioni più aggiornate dell'IDE ed è quindi inutilizzabile.

L'autore, "brunialti (https://forum.arduino.cc/index.php?action=profile;u=63039)", è parecchio che non si collega e non supporta più questa libreria che, quindi, sta diventando sempre più ... abandonware  :smiley-confuse:

Sete avvisati ...

Guglielmo
Title: Re: MENWIZ: una libreria per creare menu su LCD
Post by: gpb01 on Jun 03, 2019, 07:34 pm
Aggiornamento:  Ho trovato una versione leggermente aggiornata (sempre di 5 anni fa) della libreria MENWIZ che però compila correttamente anche con l'ultimo IDE (provata con la 1.8.9) ... QUI (https://github.com/brunialti/MENWIZ_1_3_2).

Gli esempi vanno corretti perché contengono delle include non necessarie (es. LCD.h) e istanze alla LiquidCrystal_I2C con ancora la vecchia sintassi non più supportata.

Resta sempre il discorso che l'utente "brunialti" è sparito e quindi non c'è supporto oltre quanto scritto in questo thread.

Guglielmo