problema funzionamento display

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

scusa la domanda banale...hai regolato il contrasto con il potenziometro?

Inoltre: se è 16x2, perché vai a scrivere sulle righe da 0 a 3? :slight_smile:

Oltre al contrasto, direi alcune cose:

  1. Puoi riportare il link esatto al tuo display e/o all'interfaccia I2C (se l'hai comprata a parte)?

  2. Quale libreria esattamente stai usando? Ce ne sono alcune con lo stesso identico nome, ad esempio è
    questa?

  3. 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! :wink: Fidati che è utile abituartici quando farai qualcosa di più complesso... Poi se fai una foto cerca di usare una illuminazione migliore :wink: :wink:

Quante risposte! :smiley:

  1. Puoi riportare il link esatto al tuo display e/o all'interfaccia I2C (se l'hai comprata a parte)?

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.

  1. Quale libreria esattamente stai usando? Ce ne sono alcune con lo stesso identico nome, ad esempio è
    questa?

Ho usato questa: GitHub - johnrickman/LiquidCrystal_I2C: LiquidCrystal Arduino library for the DFRobot I2C LCD displays
Da Arduino ho fatto Sketch -> Includi Libreria -> Gestione Libreria e mi ha installato questa qui, ho provato ad eliminarla ed utilizzare la tua ma nulla, non mi stampa comunque niente.
Ho usato questo esempio, della libreria che mi hai linkato tu:

#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 :smiley:

sei sicuro di non avere un potenziometro (trimmer) blu o nero nella scheda I2C?

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 :smiley:

Sul modulo I2c c'è un robo azzurro quello e il potenziometro

La vite a stella è l'elemento che si muove...in senso orario ed antiorario.

A stella?... E' a croce quella del trimmer...

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).

Ho usato questa: GitHub - johnrickman/LiquidCrystal_I2C: LiquidCrystal Arduino library for the DFRobot I2C LCD displays

Mai usata, non so come funzioni quella ma io ho sempre usato solo l'altra che ti ho linkato, che funziona benissimo.

comunque sul mio LCD non c'è nessun potenziometro per regolare la luminosità

C'è, c'è, è questo:

Prendi un piccolo cacciavite e ruota la parte centrale fino a che non vedi le scritte.

PS. docdoc sta iniziando ad odiarmi con tutti i miei problemi :smiley:

Ma no... :wink:

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

E' a croce, non a stella! Usiamo i termini corretti.

Datman:
E' a croce, non a stella! Usiamo i termini corretti.