Indirizzo non preciso su tocco display

Ciao,
progettando delle pagine sul mio display, ora mi sta capitando un problema che mi tira pazzo! toccando sul pulsante NEXT mi dovrebbe finire all’interno della condizione con variabile “currentpage == 5” invece mi “punta” la l’if successivo con variabile “currentpage == 6”! allego il codice:
il tocco del pulsante NEXT è alla riga 564, i tocchi della pagina 5 sono alla riga 576 mentre la pagina viene costruita alla riga 462.
Grazie infinite Maurizio Filomeni

progetto_C4P1.ino.ino (20.7 KB)

Hm, non so se ho capito bene cosa intendi, ma il programma è abbastanza vasto ed ovviamente è difficile poterlo far girare noi: ma per dire che passa nella if() sbagliata, tu hai attivato qualche forma di debug (es. sulla seriale) per capire esattamente dove passa e cosa valgono le variabili?

Comunque non mi piacciono molto quelle righe con graffe allo stesso livello. Con programmi così lunghi è essenziale avere sott'occhio la struttura del codice. Indenta per bene il codice (Ctrl-T) e rimandacelo.

Ciao, ho identato il codice. Il problema in sintesi è che se schiaccio il tasto next per andare a pagina 5 invece va a pagina 6.
Grazie

progetto_C4P1.ino.ino (21.6 KB)

Sono riuscito a capire dove è il problema! Senza prendere in considerazione l’intero codice del programma, basta analizzare i “tocchi” del pulsante NEXT e quelli sulla pagina 5.
La posizione in px del pulsante next coincide con la posizione dei px di due pulsanti nella pagina 5 che coincidono.
Quindi alla pressione del tasto NEXT entro nella pagina 5 ma avendo in “memoria” il tocco px e py è come se andassi a premere su uno dei due pulsanti al di sotto del tasto next (i tocchi coincidono) e logicamente anche se io non faccio pressione, automaticamente appena entro nella pagina 5, immediatamente vengo indirizzato alla pagina 6.
Questo è un problema perchè il programma è ancora lungo da sviluppare e i pulsanti sono a matrice quindi coincideranno parecchi pulsanti quello di una pagina superiore con quello della pagina infeiore o successiva!
La soluzione che mi era venuta è di dare un valore a px e py pari a “vuoto”. in questa maniera:

if (currentpage == 5) {
      px="";
py="";
      if (p.x > -11 && p.x < 34 && p.y > 120 && p.y < 171) {
...
}

Ma non va bene, si riesco ad entrare nella pagina 5 e non vengo redirezionato alla 6, ma stabilendo un valore per px e py, i tocchi nella pagina 6 non funzionano più (giustamente).
Ci dvrebbe essere un modo tipo “unset” per cancellare i valori del tocco…
Avete qualche idea pia?
Grazie
Maurizio Filomeni

Ho trovato la mia soluzione a questo problema, la posto per la community.
All’interno delle zone coincidenti con il tocco del tasto “NEXT” ho aggiunto delle condizioni (per la felicità di @docdoc).

else if (p.x > -11 && p.x < 40 && p.y > 10 && p.y < 55) {
        if (currentpage == 5) {
          jump++;
          if (jump == 3) {
            jump = 1;
          }
        }
        if (jump > 1) {
          currentpage = 6;  // pagina scelta dello spessore
          daDisegnare = true;
          SB = 1;
        }
      }

Una breve spigazione:
inserisco un controllo, la variabile “jump” che si incrementa ad ogni ingresso dell’else if del “tocco” questa variabile se assume un valore superiore a 1 da il consenso alla migrazione a pagina 6. Quindi questo significa che al primo tocco del pulsante “NEXT” non entra a “leggere” la variabile currentpage = 6, ma solo con il secondo toccco sull’area sensibile si attua la migrazione a pagina 6. Per migliorare il funzionamento ho inserito un reset della variabile jump, di modo che se qualcuno ha voglia di “giocare” facendo un avanti e dietro con le pagine, il funzionamento non viene “fallato”.
Vi saluto
Filomeni Maurizio