visualizzazione di un array: libreria openglcd

Ciao ragazzi,
vi scrivo perchè mi accade una cosa veramente strana, non so piu dove sbattere la testa. in pratica il mio obiettivo è quello di memorizzare un array, richiamarlo e poi usare i suoi elementi per contare alla rovescia fino a zero.

Il problema è che nella prima fase dove richiamo e visualizzo l’array “settore[j]” sul display vedo correttamente tutti gli elementi per come li ho precedentemente inseriri, però non appena devo visualizzare solo il primo elemento per cominciare il conteggio a zero, mi viene visualizzato un valore che non c’entra nulla con quello che dovrebbe essere…

    for (int j=1; j<=npc; j++)
               {
                settore[j] = EEPROM.read((30+((i-1)*30))+j);
                GLCD.DrawRect (3,5,122,13,PIXEL_ON); //GLCD.DrawRect (3,5,64,48,PIXEL_ON);
                GLCD.SelectFont(System5x7);      GLCD.CursorTo(13, 1);  GLCD.print("PROVA "); GLCD.print(i); 
                GLCD.CursorTo(1, 1);   GLCD.print("PC ");    GLCD.print(j); GLCD.print(" / "); GLCD.print(npc);
                GLCD.SelectFont(Verdana_digits_24);
                GLCD.CursorTo(1, 1);   GLCD.print(settore[j]);
                delay(1000);
                GLCD.ClearArea();
         
               }
 
               int f1=0; f2=0; 
               
                j=1;
               
               GLCD.CursorTo(1, 1);   GLCD.print(settore[j]);
               GLCD.SelectFont(System5x7);
               GLCD.DrawRect (3,5,122,13,PIXEL_ON); //GLCD.DrawRect (3,5,64,48,PIXEL_ON);
               GLCD.CursorTo(13, 1);  GLCD.print("PROVA "); GLCD.print(i);
               GLCD.CursorTo(1, 1);   GLCD.print("PC "); GLCD.print(j); GLCD.print(" / "); GLCD.print(npc);
               GLCD.CursorTo(1, 7);   GLCD.print("ATTESA START...");
               
               settore[j]= settore[j]+1; 
               unsigned long push[npc+1];
               int scarto[npc],p=0,a; 

               .... e dopo entro in while

Esempio: se il primo elemento è 8 mi verrà visualizzato 226, ho provato anche a partire con elementi di altre posizioni e accade la stessa cosa.

Grazie in anticipo.

>domix1684: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

fatto chiedo scusa

ragazzi ho fatto diverse prove, ho notato che se elimino questa istruzione

“settore[j]= settore[j]+1;”

il problema si risolve, pero’ mi restano 2 dubbi:

  1. perche’ crea problemi questa istruzione?

  2. perche con un display i2c e stesso programma non avevo questo problema?

Perchè il +1 va messo dentro le parentesi quadre.

domix1684: ragazzi ho fatto diverse prove, ho notato che se elimino questa istruzione

"settore[j]= settore[j]+1;"

Ma tu con quell'istruzione cosa vuoi fare? Perché, per come è scritta, incrementi di 1 il contenuto della cella j ... è questo che vuoi fare?

Guglielmo

Perché, per come è scritta, incrementi di 1 il contenuto della cella j ... è questo che vuoi fare?

esattamente, voglio incrementare di uno il contenuto di "settore[j]"....

domix1684: esattamente, voglio incrementare di uno il contenuto di "settore[j]"....

Ok, allora intanto la puoi, più semplicemente ed elegantemente scrivere:

  1. primo modo: settore[j]++;
  2. secondo modo: settore[j] += 1;

In ogni caso quell'istruzione NON deve dare problemi.

Guglielmo

P.S.: Come hai dichiarato l'array settore[] ?