Problema display LCD con modulo i2c

Salve a tutti, sono Francesco e da poco ho cominciato a smanettare con Arduino.
Ho comprato uno starter pack che comprendeva alcuni moduli per Arduino tra cui un display LCD 1602 con l'interfaccia i2c per la comunicazione.
Ho cercato dappertutto, provato almeno una decina di librerie ma nulla, non riesco a far stampare sul display una qualsiasi scritta. La retro illuminazione funziona ma non stampa nulla. I collegamenti sono a posto, GND i2c -> GND Arduino, VCC i2c -> 5V Arduino, SDA i2c-> pin A4 Arduino e SCL i2c -> pin A5 Arduino. Ho provato la NewLiquidCrystal, la libreria di Testato e molte altre senza nessun risultato... Sto cominciando a pensare che sia un difetto del display anche se mi sembra stranissimo... Il chip dell'i2c è PCF8574AT, la versione del mio compilatore Arduino è la 1.6.9!
Vi ringrazio in anticipo, spero riusciate ad aiutarmi perche non so proprio dove andare a parare :roll_eyes:

Sta arrivando Guglielmo ad aiutarti :grin: :grin:

As_Needed:
Sta arrivando Guglielmo ad aiutarti :grin: :grin:

Spiritoso .... :smiling_imp:

>francesco9632: essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

:smiley:
Solo una volta che ti sei presentato vedi anche che non faccia falso contatto e regola il trimmer dietro per vedere se magari ha una luminosità troppo bassa e poi magari posta anche il codice che usi e il link della libreria che usi :slight_smile:

IDE 1.6.5 putroppo è la soluzione migliore anche se non la più elegante al problema

aster94:
IDE 1.6.5 putroppo è la soluzione migliore anche se non la più elegante al problema

Ma non diciamo cose errate!! Primo, io e tanti altri del forum abbiamo diversi moduli e funzionano benissimo con IDE ultimo, e con quelle librerie citate. Secondo, cosa c'entra l'IDE ? Se tu riesci solo con versione 1.6.5 hai tu problemi a configurare la 1.6.9, non dare suggerimenti fuorvianti, per favore.

@francesco,
1.hai dato l'indirizzo I2C giusto ? Hai usato lo sketch I2CScanner per trovare l'indirizzo corretto ?
2.alcuni moduli cinesi I2C (si basano quasi tutti su quel chip PCF) mappano i pin in maniera non standard e quindi i parametri da passare alla libreria cambiano
esempio di un mio modulino non standard, devo passare questi parametri:

// i2c_addr,EN,RW,RS,D4,D5,D6,D7,Backlight, POLARITY                              
LiquidCrystal_I2C lcd(0x26, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

nid69ita:
Ma non diciamo cose errate!! Io e tanti altri del forum abbiamo diversi moduli e funzionano benissimo con IDE ultimo, e con molte librerie.
@francesco, hai dato l'indirizzo I2C giusto ? Hai usato lo sketch I2CScanner per trovare l'indirizzo corretto ?

Infatti, con la nuova versione ci sono molte librerie funzionanti!

Scusate, sono stato sbadato, avrei dovuto leggere il regolamento subito dopo essermi registrato... Spero possiate perdonarmi :smiley:
Comunque... Per completare la mia domanda, posso aggiungere che uso arduino UNO, ho provato a regolare il trimmer ma l'unico risultato che ottengo sono semplicemente i pixel che si colorano di bianco a formare la matrice 16x2 del display!
Comunque il mio codice è semplicemente il codice di esempio della libreria che ho usato, ossia questo:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

La libreria in uso è quella che si trova nel sito di arduino: Arduino Playground - LCDi2c
Scusate per la non-presentazione e grazie in anticipo per l'aiuto!

Come ti è stato detto, probabilmente quello dell'esempio (0x3F) NON è l'indirizzo I2C del tuo display ...
... usa I2CScanner per trovare quale è :wink:

Guglielmo

usa i2c scanner come consigliato
beh allora spiegatemi voi perchè a me con indirizzo giusto e mezzora di prove con varie librerie, non mi funzionava. Come a me a vari altri utenti sul forum in inglese è stata consigliato di downgradare l ide

Chiedi a chi ti ha dato quel consiglio !! Nel forum chi scrive sono altri utenti come te e me. Non sò chi ti ha dato quel consiglio. Forse usi una libreria vecchia che ha problemi con IDE nuovo. Ripeto le librerie I2C per lcd aggiornate non danno problemi.
Ricordo vagamente una discussione con un consiglio di modifica dentro la lib vecchia per compatibilità con nuovo IDE (mi pare consiglio di Brunello, il ritorno di un parametro). Forse è quello il problema.

aster94:
beh allora spiegatemi voi perchè a me con indirizzo giusto e mezzora di prove con varie librerie, non mi funzionava. Come a me a vari altri utenti sul forum in inglese è stata consigliato di downgradare l ide

C'era qualche altra cosa perché ho un'infinità di installazioni con LCD I2C (uso SOLO quelli I2C) e non ho mai avuto problemi con l'ultima versione dell'IDE.

I "consigli" sul downgradare l'IDE ... lasciano il tempo che trovano ...
... certo che se si usano librerie NON aggiornate, con gli ultimi IDE ci sono problemi, ma non è certo un problema dell'IDE, ma degli utenti che NON usano librerie up-to-date !

Guglielmo

>Nid ... mi hai anticipato :smiley: :smiley: :smiley:

nid69ita:
@francesco,
1.hai dato l'indirizzo I2C giusto ? Hai usato lo sketch I2CScanner per trovare l'indirizzo corretto ?
2.alcuni moduli cinesi I2C (si basano quasi tutti su quel chip PCF) mappano i pin in maniera non standard e quindi i parametri da passare alla libreria cambiano.

gpb01:
Come ti è stato detto, probabilmente quello dell'esempio (0x3F) NON è l'indirizzo I2C del tuo display ...
... usa I2CScanner per trovare quale è :wink:

Guglielmo

Si ho usato un i2C scanner per trovare l'indirizzo ed è proprio quello che ho scritto nel codice, 0x3F!

aster94:
IDE 1.6.5 putroppo è la soluzione migliore anche se non la più elegante al problema

Appunto come hai detto tu non è la soluzione più elegante... Penso che un buon programmatore debba saperli risolvere i problemi e non bypassarli! mi piacerebbe capire dove sta l'errore...

nid69ita:
@francesco,
2.alcuni moduli cinesi I2C (si basano quasi tutti su quel chip PCF) mappano i pin in maniera non standard e quindi i parametri da passare alla libreria cambiano
esempio di un mio modulino non standard, devo passare questi parametri:

// i2c_addr,EN,RW,RS,D4,D5,D6,D7,Backlight, POLARITY                              

LiquidCrystal_I2C lcd(0x26, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Mi quoto. Magari fai foto del modulino davanti e dietro. C'e' una sigla/marca ?

nid69ita:
Magari fai foto del modulino davanti e dietro. C'e' una sigla/marca ?

Ecco le foto del modulo!

Io non vedo nessuna sigla o marca... L'unica sigla che vedo è quella sul chip dell'i2c e ho gia scritto sopra!

La libreria in uso è quella che si trova nel sito di arduino: Arduino Playground - HomePage

Secondo me, sempre da quel link, la libreria corretta è la Generic CN type 2 PCF8574 (black)

Brunello:
Secondo me, sempre da quel link, la libreria corretta è la Generic CN type 2 PCF8574 (black)

Avevo provato anche quella... Nulla da fare non stampa niente

Scusa, ma perchè nella foto ci sono solo 3 fili collegati ?

nid69ita:
Scusa, ma perchè nella foto ci sono solo 3 fili collegati ?

Mi si sarà staccato girandolo, in una delle due infati ce ne sono quattro attaccati! :smiley:

Comunque ho controllato e :
la libreria di Testato, funziona. Va preso l'ultima versione, aggiornata ieri
http://forum.arduino.cc/index.php?action=dlattach;topic=242423.0;attach=174890

Delle librerie presenti alla pagina Arduino Playground - LCDi2c la Generic CN type 2 PCF8574 (black) funziona a meta'. Ovvero stampa solo il primo carattere perche' non è stata aggiornata. Comunque si tratta di fare una piccola modifica

Oppure usare Questa libreria , dando come parametri

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);