Display lcd i2c solo quadratini bianchi

Buongiorno a tutti, ho aggiunto a un codice preesistente un display lcd i2c.
Qui trovate tutto il codice
sketch_sep04b.ino (2,8 KB)

Purtroppo però, sul monitor non scrive nulla. Ho girato il potenziometro dietro...ma o si vede solo schermo blu, o fa questi quadratini bianchi

Qualcuno sa come risolvere?

Buongiorno

come hai collegato il LCD?

Questo codice è strano

LiquidCrystal_I2C lcd(0x27, 16, 2);
...
  lcd.begin(16, 2);

➜ quale libreria (LiquidCrystal_I2C.h) stai usando?

Ciao, grazie.

  1. Dici di togliere
    lcd.begin(16, 2);

?

  1. Questa libreria https://github.com/johnrickman/LiquidCrystal_I2C

Purtroppo con le librerie I2C è sempre un gran casino ... tutti ne hanno fatta una e tutti l'hanno chiamata ... LiquidCrystal_I2C :grinning_face_with_smiling_eyes:

Dai retta, installa quella che ti allego, che è più che collaudata ed è manutenuta da alcuni utenti qui sul forum, e vedrai che non avrai problemi. L'uso è molto simile, le chiamate praticamente uguali, guardati comunque gli esempi allegati per capire come usarla.

PCF8574_HD44780_I2C.zip (522.4 KB)

Guglielmo

P.S.: QUESTO è il thread relativo alla libreria suddetta con le varie discusisoni, mentre QUI la trovi anche su GitHub :wink:

con questa libreria, l'inizializzazione non viene fatta con begin() ma con init()

(e assicuratevi di rimuovere l'altra libreria, in questo modo non avrete problemi)

Hai verificato che l'indirizzo del dispositivo sia effettivamente 0x27?
A volte nei moduli i2c di dietro esiste la possibilita' di cortocircuitare dei pin per poter cambiare manualmente l'indirizzo del dispositivo qualora esistano altri dispositivi i2c contemporaneamente utilizzati (con stesso indirizzo) per non farli andare in conflitto.

Esiste una libreria chiamata i2c address scanner che ti permette di vedere su monitor seriale tutti i dispositivi i2c correttamente connessi al microcontrollore e il loro indirizzo.

Grazie a entrambi

Semplicemente sostituendo
lcd.begin(16,2);

con

lcd.init();

Scrive sul display ma è come se non interpreta nè il comando

lcd.clear();

nel setup,
nè gli allineamenti nel loop

lcd.setCursor(1, 0);
  lcd.print("Angle(°)=");
  lcd.setCursor(11, 0);
  lcd.print(i);
  lcd.setCursor(2, 0);
  lcd.print("Distance(cm)=");
  lcd.setCursor(14, 0);
  lcd.print(distance);

questo è il risultato

Ho scaricato il file, e copiato l'intera cartella PCF8574_HD44780_I2C (che è una sottodirectory di PCF8574_HD44780_I2C-main nel file rar) nella cartella delle librerie di arduino.

ho scritto

#include <PCF8574_HD44780_I2C.h>
PCF8574_HD44780_I2C lcd(0x27,16,2);

e nel setup

lcd.init();

Ma mi da lo stesso problema di sopra

@Ketto grazie anche a te

Ho visto ora latua risposta. Suppongo però che se adesso inziia a scrivere (anche se male) l'indirizzo è corretto...o sabglio?

in linea di massima si, solitamente se vedi caratteri sbagliati e' perche' ci sono interferenze o falsi contatti, diminuisci un po' con il potenziometro dietro la retroilluminazione cosi' vedi meglio i caratteri.
Verifica anche che non ci sia conflitto tra le librerie

Per tagliare la testa al toro, ho fatto lo scan e si trova a quell'indirizzo

I2C Scanner
Scanning...
I2C device found at address 0x27  !
donef 

Per quanto riguarda il potenziometro, girandolo cambai solo la luminosità...invece il mio problema è che le scritte si accavallano benchè abbia settato le posizioni...
Tra l'altro, caricando il demo della libreria di @gpb01 funziona bene...quindi il problema è nello sketch

T'ho detto, lascia stare le varie altre librerie (che , tra l'altro, ogni tanto hanno qualche buchetto) e usa quella che ti ho dato ... sono anni che viene manutenuta, aggiustata, ottimizzata, ecc. ecc. e, se il demo ti funziona bene, parti da quello e applicalo al tuo programma :wink:

Guglielmo

Grazie, ho riscritto il codice e ora funziona!