Salve a tutti, avrei un problema con l'uso di un display 16x02 che non riesco proprio far funzionare.
Sono abbastanza decente con le saldature anche se sicuramente non un esperto, ma ho controllato con il tester e non ci sono cortocircuiti.
In pratica ho provato con sia un codice fatto da me, sia il classico codice "Hello world", ma all'accensione del display compaiono dei quadrati bianchi e nonostante il tentativo di reset non succede nulla.
Il potenziometro funziona correttamente per il contrasto.
Ho provato con due Arduino diversi ma il problema rimane lo stesso...sapreste aiutarmi?
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.
Forse i nomi D4 D5 ecc vanno in conflitto con qualche costante predefinita?
Prova a far precedere tutto quello che riguarda l'LCD dal prefisso LCD_ (può essere anche PIPPO_, ma è giusto per dare un prefisso sensato con il suo utilizzo).
Per il resto ottimo l'uso delle variabili 'old_visfrase' e 'old_button' per rilevare gli eventi e lasciare il loop libero di girare.
Lato software non so aiutarti, ma lato hardware, quel tipo di display ha sempre avuto dei problemi di stabilita' rispetto ai segnali di controllo, (E, RS, RW e D, ma soprattutto l'Enable E, specie quando vengono collegati tramite cavi) ... potresti fare una prova per vedere se magari dipende da quello invece che dal software (e anche se non fosse, al limite ti sei levato il problema), mettendo in serie a questi pin una R da 100 ohm, e fra ogni pin e GND un condensatorino da 10n (saldati sul display, se possibile)
Anche se di solito i disturbi dati da questi pin sono diversi (caratteri strani o a caso), non si sa mai ... inoltre controllerei le connessioni, se mancano i segnali di controllo o non fanno contatto bene (basta un falso contatto nella breadboard), nulla viene trasferito dal micro al display.
Io ho sempre usato la connessione parallela senza problemi. Ho usato l'I2C solo quando sono stato costretto per mancanza di pin disponibili, per esempio per accendere 17 LED collegati a matrice più encoder e segnali in ingresso.
Sicuramente i collegamenti devono essere corti.
RW puoi ponticellarlo a GND sullo stesso LCD.
Prova questo semplice programmino: