Problema con lcd I2C

Ciao a tutti ho acquistato un LCD 20x4 con scheda YwRobot LCM1602 IIC V1

Ho scaricato la libreria e ho fatto una prova di scrittura seguendo le indicazioni dal sito

ho caricato questo scatch

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

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

 
void setup()
{
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
}
 
void loop()
{

 
  lcd.setCursor(0,0);
  lcd.print("11111");
  lcd.setCursor(0,1);
  lcd.print("22222");
  lcd.setCursor(0,2);
  lcd.print("33333");
  lcd.setCursor(0,3);
  lcd.print("44444");
  
}

Quando lo carico vedo solo la prima cifra scritta per ogni riga, cioè quello che vedo è:
1
2
3
4

Nel dubbio che l’lcd avesse problemi ho modificato lo skatch così:

lcd.setCursor(1,0);
lcd.print("11111");
lcd.setCursor(2,1);
lcd.print("22222");
lcd.setCursor(3,2);
lcd.print("33333");
lcd.setCursor(4,3);
lcd.print("44444");

e quello che visualizzavo era:

1
2
3
4

Mi sapete dire cosa sbaglio?

Se avessi fatto un po' di ricerche sul forum avresti scoperto che è un problema di cui si è parlato un'infinità di volte (ad esempio QUI oppure QUI ...) ed è causato da uno sbaglio presente nella libreria che hai scaricato da quel link ... :smiling_imp:

Modifica LiquidCrystal_I2C.cpp ...

inline size_t LiquidCrystal_I2C::write(uint8_t value) {
	send(value, Rs);
	return 0;
}

in ...

inline size_t LiquidCrystal_I2C::write(uint8_t value) {
	send(value, Rs);
	return 1;
}

Guglielmo