alcuni problemi con MENWIZ.h

Ciao,
Stavo cercando di capire come funziona il menu MENWIZ.h e probabilmente trovo difficoltoso comprendere la gerarchia.
allego il mio menu:

 tree.begin(&lcd,16 ,4); //declare lcd object and screen size to menwiz lib
  tree.addUsrNav(&scanNavIR,6);

r=tree.addMenu(MW_ROOT,NULL,F("<-Orologio->"));  
///////////////////////////////
  //  MODIFICA DATA e  ORA     //
  //////////////////////////////
        
    s1=tree.addMenu(MW_SUBMENU,r,F(" ora  data"));    
  
                  s2=tree.addMenu(MW_VAR,s1,F(" Cambia ora"));  
                            s2->addVar(MW_AUTO_BYTE,&h,0,23,1); 
                          
                  s2=tree.addMenu(MW_VAR,s1,F(" modifica minuti"));    
                                s2->addVar(MW_AUTO_BYTE,&m,0,59,1); 
                          
                  s2=tree.addMenu(MW_VAR,s1,F(" scrivi orlogio"));      
                           s2-> addVar(MW_ACTION,ModOraMin);
		             s2->setBehaviour(MW_ACTION_CONFIRM,false);                                     
	////data
                  s2=tree.addMenu(MW_VAR,s1,F(" modifica giorno"));  
                                s2->addVar(MW_AUTO_BYTE,&g,0,31,1); 
                                
                  s2=tree.addMenu(MW_VAR,s1,F(" modifica mese"));    
                                s2->addVar(MW_AUTO_BYTE,&m,0,31,1); 
                                
		   s2=tree.addMenu(MW_VAR,s1,F(" modifica anni"));
                               s2->addVar(MW_AUTO_BYTE,&ann,13,50,1); 
                               
                   s2=tree.addMenu(MW_VAR,s1,F(" Aggiorna Data"));
                                          s2-> addVar(MW_ACTION,ModData);
		                s2->setBehaviour(MW_ACTION_CONFIRM,false);  
	
 /////////////////////////////////////
 //  Visualizza ora e Luci        //
 ////////////////////////////////////        

   s1=tree.addMenu(MW_VAR,r,F(" ora attuale"));       
      s1->addVar(MW_ACTION,VediOra);                   
           s1->setBehaviour(MW_ACTION_CONFIRM,false);

////luci

	 s1=tree.addMenu(MW_SUBMENU,r,F(" imposta luci"));    
                    s2=tree.addMenu(MW_VAR,s1,F(" luci bianche"));  
                            s2->addVar(MW_AUTO_BYTE,&lb,0,255,10);  
                                                       
                    s2=tree.addMenu(MW_VAR,s1,F(" luci blu"));    
                          s2->addVar(MW_AUTO_BYTE,&lblu,0,255,10); 
                          
	           s2=tree.addMenu(MW_VAR,s1,F(" luci UV"));    
                       s2->addVar(MW_AUTO_BYTE,&uv,0,255,10); 
                       
                   s2=tree.addMenu(MW_VAR,s1,F(" Comanda luci")); 
                   s2->setBehaviour(MW_MENU_COLLAPSED,true);   
                                         s2-> addVar(MW_ACTION,ModLuci);
		              s2->setBehaviour(MW_ACTION_CONFIRM,false);  
	
	

   //////////////////////////////////////
  //  schermata iniziale e di default  //
  //////////////////////////////////////
  
  //  tree.addSplash("Questo orologio\n dotato di una\n   precisione\n    assoluta\n", 400);
      tree.addUsrScreen(DataOraTemp,1000); 
      irrecv.enableIRIn(); //Avvia ricezione

spesso il menu diventa confuso e inverete le voci ma se resetto ritorna nuovamente funzionate.
Ho anche provato a far diventare il menu luci s4 ed il menu data orea s3 ma il risultato non cambia

Grazie
p. s.

#define MW_AUTO_BYTE   	15  //byte VALUE WITH INCREMENT STEP

Hai 6 bottoni ? Non vedo la chiamata a navButtons L'opzione MENU_COLLAPSED funziona solo con 6 bottoni. verifica la memoria disponibile dopo tutte le dichiarazioni di MENWIZ con la funzione freeMem. Usi esattamente 15 volte la funzione addMenu se non sbaglio . Qual'è il valore di MAX_MENU in MENWIZ.h?

EDIT: sorry non avevo visto la scanUsrNav...

Grazie, da:

 lcd.print(tree.freeRam());

leggo 121 compilando mi dice: Dimensione del file binario dello sketch: 26.496 bytes (su un massimo di 32.256 bytes)

#define MAX_MENU         15

lo devo alzare?

ma ... è la gerarchia dei menu è corretta?

si mi pare che uso 15 addMenu

Modifica giorno e modifica mese dovrebbero essere figli di s1 e non s2. Prova

Ciao, Grazie! ma ... mia svista le ho provate, anche con varie combinazioni, (con una cera logica spero) ma senza risultato.

La mia teoria è che vanno a riscrivere sulla stessa porzione di menoria e nella visualizzazione in modo apaprentemente casuale i menu si mischiano.

Luca

Haivpoca memoria sicuramenre. 122 bbyte sono pochi. Prova a dusabilitare funzioni eeprom e/o a nin includere altre lib sino a che sei sicuro che il menu fubziona. Tanto per provare prova a commentare un addMenu e usa la funzione error per debug

ciao, ho provato ad escludere :

tree.addUsrScreen(DataOraTemp,1000);

sembrerebbe andare ora ho 160 di freeRam.

faccio altre prove Mentre se tolgo

s1->addVar(MW_ACTION,VediOra);

quindi rimetto addUsrScreen con l'ora cosa + logica mi da come ram libera: 183 sembra per adesso non inveretire le voci :open_mouth: (quasi ci siamo) :open_mouth: Grazie