[RISOLTO] Menu Nokia 5110 con push buttons non funziona.

Buona sera a tutti, sto riscontrando problemi nell'esecuzione del mio programma su Arduino Uno con display Nokia 5110.
Praticamente, quando carico il codice visualizzo il "sub menu" (appena Arduino si accende salta automaticamente dal menu principale al "sub menu") e non mi funzionano i pulsanti.
Ho preso il codice da questo sito. L'ho "tradotto" dal francese e nella compilazione non riscontro nessun errore.

Allego il codice da me tradotto.

Allego anche l'immagine del circuito (ho dimenticato di disegnare il cavo GND che va dalla breadboard a GND di Arduino, nel circuito comunque è presente).

codice.txt (9.45 KB)

  if (numberMenu < 100) {  // siamo in una pagina di menu

    if (numberMenu == 0) {  // menu principale
      numberOfLines = numberOfMenus;
    }
    else {  // non è il menu principale
      numberOfLines = numberItems[numberMenu - 1];
    }

Cosa pensi che leggi sulla 98a posizione del array numberItems che ha 6 elementi?

Ciao Uwe

illya95:
Buona sera a tutti,

Benvenuto,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (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 tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:
nid69ita
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

uwefed:

  if (numberMenu < 100) {  // siamo in una pagina di menu

if (numberMenu == 0) {  // menu principale
      numberOfLines = numberOfMenus;
    }
    else {  // non è il menu principale
      numberOfLines = numberItems[numberMenu - 1];
    }




Cosa pensi che leggi sulla 98a posizione del array numberItems che ha 6 elementi?

Ciao Uwe

Non capisco che cosa intendi. Potresti essere più esaustivo per favore? Grazie.

A parte il fatto che l'LCD del nokia funziona a 3.3V ( e cosi' vorrebbe anche i segnali ) infatti nel progetto usano un CD4050 per adattare i livelli......

vedo poi dal tuo collegamento che usi i pulsanti verso il GND, ma hai modificato lo sketch in conseguenza ?

brunello22:
A parte il fatto che l'LCD del nokia funziona a 3.3V ( e cosi' vorrebbe anche i segnali ) infatti nel progetto usano un CD4050 per adattare i livelli......

Infatti, ho visto che nello sketch originale veniva usato un CD4050. Pensi che è per quello che non funzionano i pulsanti?

brunello22:
vedo poi dal tuo collegamento che usi i pulsanti verso il GND, ma hai modificato lo sketch in conseguenza ?

Ho collegato i pulsanti a GND, scusa la mia poca conoscenza nell'ambito ma devo chiedertelo: come lo modifico perché i pulsanti funzionino? Se vuoi puoi lasciarmi qualche link dove posso andare a studiare.

Grazie per le tue risposte.

illya95:
Infatti, ho visto che nello sketch originale veniva usato un CD4050. Pensi che è per quello che non funzionano i pulsanti?

No, il discorso del CD4050 è per non danneggiare il display. Se da Arduino dai alimentazione e segnali a 5V ad un display che funziona a 3,3V a lungo andare lo danneggi

nid69ita:
No, il discorso del CD4050 è per non danneggiare il display. Se da Arduino dai alimentazione e segnali a 5V ad un display che funziona a 3,3V a lungo andare lo danneggi

Alla breadboard ho attaccato un power supply regolabile (3v3 o 5v) <-- allego foto

Non basta. Leggi bene quel che diciamo. NON solo il display deve avere alimentazione a 3,3V ma anche i segnali tra Arduino ed il display devono essere portati a 3,3V. I pin di Arduino Uno sono a 5V. Quindi i segnali tra Arduino Uno e il display sono a 5V e a lungo andare ti rovinano il display.

illya95:
Ho collegato i pulsanti a GND, scusa la mia poca conoscenza nell'ambito ma devo chiedertelo: come lo modifico perché i pulsanti funzionino? Se vuoi puoi lasciarmi qualche link dove posso andare a studiare.

Qui un esempio. I pulsanti messi così vanno bene, solo che sono LOW se premi il pulsante e HIGH se non lo premi.
https://www.arduino.cc/en/Tutorial/InputPullupSerial

Nel tuo programma invece usi la logica opposta, ovvero pensi che se non premi è LOW (ovvero 0) e HIGH (ovvero 1) se premi
Basta che quando leggi i pulsanti davanti metti il not ovvero simbolo ! prova e vedi se funziona
esempio: readDOWN = ! digitalRead(buttonDOWN);

nid69ita:
Qui un esempio. I pulsanti messi così vanno bene, solo che sono LOW se premi il pulsante e HIGH se non lo premi.
https://www.arduino.cc/en/Tutorial/InputPullupSerial

Nel tuo programma invece usi la logica opposta, ovvero pensi che se non premi è LOW (ovvero 0) e HIGH (ovvero 1) se premi
Basta che quando leggi i pulsanti davanti metti il not ovvero simbolo ! prova e vedi se funziona
esempio: readDOWN = ! digitalRead(buttonDOWN);

Ho fatto come mi hai consigliato tu e ho risolto il problema, adesso i pulsanti funzionano. Grazie mille per il tuo aiuto.

Andrò a vedere come trasformare i 5v di Arduino in 3,3v per il display.