Premetto che ho dato un occhiata ad una discussione in questa sezione che tratta del mio stesso display,
(anche se il mio è un 16x02) tuttavia non ho trovato nulla che possa aiutarmi.
Il display ovviamente è collegato correttamente, vi allego una foto qualora non vi fidaste, quindi presumo sia un problema di codice, anche se mi lascia abbastanza perplesso avendo utilizzato un codice d'esempio :o
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Hello, world!");
lcd.setCursor(2,1);
lcd.print("Ywrobot Arduino!");
lcd.setCursor(0,2);
lcd.print("Arduino LCM IIC 2004");
lcd.setCursor(2,3);
lcd.print("Power By Ec-yuan!");
}
void loop()
{
}
Il codice compila senza errori (uso la versione 1.8.12), rispetto all'originale ho cambiato l'address da 0x27 a 0x3f, l'indirizzo l'ho ricavato dallo sketch i2cdetect e i parametri di riga colonna, rispettivamente da 20,4 a 16,2.
Appena carico lo sketch, il monitor si spegne per circa un secondo,quindi presumo esegui correttamente la init o la blacklight, poi dopo l'accensione non stampa assolutamente nulla
Puoi riportare il link esatto al tuo display e/o all'interfaccia I2C (se l'hai comprata a parte)?
Quale libreria esattamente stai usando? Ce ne sono alcune con lo stesso identico nome, ad esempio è questa?
Quello NON è uno dei codici di esempio della libreria. Hai provato ad usare uno degli esempi della libreria, invece di usare del codice trovato chissà dove? Ad esempio il classico esempio "HelloWorld (al limite solo cambiando l'indirizzo I2C)?
A conferma del punto precedente, nel codice vedo ad esempio cose strane, come:
lcd.init(); // initialize the lcd*
lcd.init();*
Perché due volte la init?
E poi:
lcd.setCursor(3,0);*
Stai scrivendo sulla quarta riga di un display che ne ha solo due!
PS: abituati ad usare fili dal colore più "standard", rosso e nero mettili solo per le alimentazioni 5V e GND! Fidati che è utile abituartici quando farai qualcosa di più complesso... Poi se fai una foto cerca di usare una illuminazione migliore
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3f, 16, 2);
void setup()
{
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.print("Hello, world!");
}
void loop()
{
// Do nothing here...
}
A cui ho solo cambiato l'indirizzo in 0x3f, comunque si avevo anche io il dubbio sull'utilità della doppia init :D, anche il fatto del setCursor effettivamente.
scusa la domanda banale...hai regolato il contrasto con il potenziometro?
Ma figurati, sono alle prime armi con arduino, per me non c'è nulla di banale, comunque sul mio LCD non c'è nessun potenziometro per regolare la luminosità
PS. docdoc sta iniziando ad odiarmi con tutti i miei problemi
Il display sarebbe quello che ti ho allegato come immagine, non c'é nessun potenziometro, nessuna rotellina od oggetto girabile per regolare la luminosità, il quadratino blu è fisso e non si sposta manco a staccarlo
lcfmr:
Ho comprato un set in cui era incluso anche il display, il modello è l2C LCD 1602, riportato su un immagine con i componenti del set.
Si ma ci sono vari display LCD (dipende da quale chip usa) e varie interfacce I2C (dipende per l'indirizzo, in genere ci sono 3 piazzole che identificano l'indirizzo, in base al chip).
Risolto, lo scrivo magari in futuro potrebbe essere d'aiuto ad altri.
Avevo diverse librerie LiquidCrystal_I2C, non solo due, le ho cancellate tutte ed ho reinstallato quella che mi ha consigliato docdoc, che funziona perfettamente :D.
Non era il problema della luminosità dello schermo, ho usato un cacciavite a stella per provar a regolarla, è stato utile per diminuire un po' la luminosità, ma si leggeva lo stesso