u8glib: strano problema con menù a più di 4 voci GLCD 128x64

Ciao a tutti, da tempo sto cercando una soluzione ad un problema che mi si presenta su un menù che ho realizzato su display GLCD 128x64 basato su chip ST7920 e che ho programmato sfruttando la libreria grafica u8glib.
Cerco di spiegare brevemente il programma: sulla prima schermata che appare all’accensione vorrei avere un numero x di voci (ad esempio 3) che mi permettano di accedere ai rispettivi sottomenù i quali avranno ognuno un numero y di voci.
Per muovermi tra i menù sto usando un tastierino 4x4 con la libreria keypad il tastierino è quello classico
1 2 3 A
4 5 6 B
7 8 9 C

  • 0 # D

Nel mio programma vorrei utilizzare il tasto A per selezionare la voce superiore a quella attualmente selezionata del menù, B per selezionare quella inferiore, # per entrare nel menù della voce selezionata e infine * per tornare al menù precedente (come fossero delle freccette su, giu, destra, sinistra per intenderci).
(chiaramente alla comparsa della schermata la voce selezionata è la prima in alto e se premo A il selettore passa all’ultima in basso, così come se ho premuto il tasto B tante volte quante sono le voci menù e quindi sto selezionando l’ultima e lo ripremo la voce selezionata sarà la prima in alto)

Arriviamo al problema il primo menù quello che compare all’accensione funziona benissimo, riesco a mettere anche 6 voci e utilizzando i tasti posso spostarmi col selettore su e giu tra tutte le voci ed entrare in un qualsiasi sottomenù, quando però entro in un sottomenù se questo è composto di un numero <= 4 voci tutto funziona perfettamente come descritto precedentemente, se invece inserisco 5 voci quando mi porto con il selettore sopra alla quinta si blocca il programma e non mi “sente” neanche il tasto * per ritornare al menù precedente l’unico modo è premere reset e ricominciare il programma da 0.
La cosa ancora più curiosa è che se questo sottomenù è composto da 6 o 7 voci, quando accedo (come detto prima) il selettore mi seleziona la prima voce se premo A tranquillamente passa alla settima voce, ripremo A e passa alla sesta, ripremo A e arriva alla quinta inchiodando il programma.

Per dirla breve si blocca sempre sulla 5a voce sia che ci arrivi dall’alto che dal basso.

Le ho provate davvero tutte non so più dove buttarmi… Vi allego il mio programma spero riusciate ad aiutarmi in qualche modo :slight_smile:

selezioni.ino (2.38 KB)

test_menu_lungo.ino (2.36 KB)

disegnomenu.ino (1.19 KB)

Hi. I have the exact same problem as you. I am using the Menu example in the U8Glib library. I have 5 menu items. The first 4 works ok when I select them. But the fifth only displays a blank screen. But the program does not crash because if I press the back button it goes back to the menu and I can go int the other four items no problem. I have been trying to solve this problem but never got to find a solution. If some one knows please I would really appreciate.

Hi, "happy" to see i'm not the only with this problem :P If it can help to find a solution i've tried to change the font size from 6x10 to 5x7 or smaller and I find out that in this case the problem is on the sixth or seventh items (it depend by the font size) .. So it seems a problem around a particular area of pixels. At the moment i solved the problem by printing only the menu screen with more than 4 menu items with a smaller font but is not a good solution :|

se si blocca al 99% è perchè un ciclo va in loop... L'ora è tarda e la stanchezza si fa sentire, domani riguardo gli schech... ti consiglio di usare i file header e i file CPP/C in base a cosa devi fare... ovviamente usare anche le classi che sono una vera comodità... ne riparliamo domani :)