LiquidCrystal_I2C lcd.print affiche seulement le premier caractère ...

Bonjour à tous,
Depuis 2 jours j'essaie vainement d'afficher le fameux "Hello world!" sur un afficheur16x2 ou 20x4 avec la liaison I2C . Mais seul le H de Hello World s'affiche. En fait c'est toujours le premier caractère de la chaine.
Je crois que j'ai essayé toutes les librairies possibles, sur Arduino Uno et Mega 2560. De plus j'ai 2 afficheurs et le pb est sur les 2.
J'ai bien vu le pb évoqué sur le forum américain mais je ne comprends pas leurs solutions
Si quelqu'un peut me donner un lien pour une bonne librairie qui fasse fonctionner mon LCD2004 de SainSmart.
Merci.

//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

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

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

void loop()
{
}

Résultat : H

bonjour,
code entre balise code </>

mets avant le lcd.print....... ceci

lcd.setCursor ( 0, 0 );

Merci pour cette info , mais je l'ai déjà testée.
D'ailleurs je ne pense pas que ce soit indispensable sauf si évidemment on pointe un endroit particulier, on doit prendre le curseur courant.

xavierdk29:
Merci pour cette info , mais je l'ai déjà testée.
D'ailleurs je ne pense pas que ce soit indispensable sauf si évidemment on pointe un endroit particulier, on doit prendre le curseur courant.

bonjour
probleme evoqué recemment
j'ai eu des problemes au debut avec les différentes libs I²C/LCD
perso j'utilise celle ci sans probleme

Merci Artouste pour l'info , mais là aussi j'ai essayé la version NewliquidCristal_V1.3.4 et LiquidCristal_v1.2.1.
Sur le forum américain ils parlent de la version de l'IDE associée
peux-tu me préciser la version de ton IDE et la version de LiquidCristal que tu utilises ?

Merci d'avancei

xavierdk29:
Merci Artouste pour l'info , mais là aussi j'ai essayé la version NewliquidCristal_V1.3.4 et LiquidCristal_v1.2.1.
Sur le forum américain ils parlent de la version de l'IDE associée
peux-tu me préciser la version de ton IDE et la version de LiquidCristal que tu utilises ?

Merci d'avancei

1.6.5 pour l'ide (ça fait un moment que j'en reste pour l'instant là en ce qui me concerne :grin: )
1.3.4 pour NewliquidCristal_

Merci encore une fois ! ... mais j'abandonne.
J'ai essayé l'IDE 1.6.5 1.6.6 1.6.7 et la 1.6.8 qui vient de sortir , sans succès, et avec des résultats différents suivant les librairies.
Donc je reviens à la librairie qui affiche le premier caractère et pour les lcd.print je fais une fonction lcdprint qui affiche tous les caractères avec une boucle for.
Pas très élégant... mais ça marche

//Library version:1.1 arduino_499745
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.backlight();
  lcd.setCursor(3, 0);
  lcdprint("Hello, world!");
}
void lcdprint(String s) {
  for (int  i = 0; i < s.length(); i++)  lcd.print(s[i]);

}
void loop()
{
}

Résultat : Hello, world!

Pour moi cette solution à fonctionné
https://forum.arduino.cc/index.php?topic=375009.0

J'avais le même problème sur un lcd 20x4, impossible d'afficher des caractères ! Ma solution a été résolu en prenant la librairie NewLiquidCrystal et en affichant ceci avant le setup() :

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

essaye de changer ton 0x27 par 0x3F c'était ce qui me bloquais mon LCD pour ma part :wink: et dans le setup() tu met un lcd.begin(nb colonnes ,nb lignes).

J'espère t'avoir aidé ça à marché pour moi :wink:
Je te met un exemple d'un de mes programme :slight_smile:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address


void setup() {
  lcd.begin(20,4);
  /* ------- Quick 3 blinks of backlight  -------------*/
  for(int i = 0; i< 2; i++)
  {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  
}

void loop() {
  lcd.home();
  lcd.leftToRight();
  for(int i = 0 ; i < 15 ; i++){
    lcd.setCursor(i,1);
    lcd.print(" Hello");
    delay(200);
    }
  lcd.clear();
}

Salut à tous,
J'ai exactement le même problème.
J'ai lu (je retrouve plus où) que quelqu'un avait résolu ce problème en prenant une version plus ancienne de l'IDE Arduino (1.05 je crois).
Qui saurait à partir de quelle version cela marche?
Merci

J'ai également eu le même problème avec un écran LCD I2C 1602. La solution d’écrire lettre par lettre marche. Cependant en vérifiant le problème n'aviat lieux que sur mon arduino pro micro et pas sur un uno sans pour autant changer le programme. Je ne sais toujours pas d'ou viens le problème.

Bonjour,

J'avais le même problème et pour moi voici ce qui a fonctionné.

Je me suis dit qu'en les installant toutes et en les appelant de la même façon dans le code, comment l'IDE allait-il appeler la dernière installée ? #include <LiquidCrystal_I2C.h>

Alors J'ai supprimé toutes mes anciennes bibliothèque LCD. (directement dans le dossier librairie de l'IDE car je n'ai pas trouvé d'autre façon de le faire dans le soft)

et j'ai ré-installé celle de Quentin (* LiquidCrystal_I2C-master.zip) disponible sur ce post :
https://forum.arduino.cc/index.php?topic=375009.0

En espérant que cela fonctionne pour vous aussi.

PS : j'ai refait le test via l'online tool et cela à également marché en appelant cette bibliothèque donc je pense fortement que le problème vient de l'appel de la bonne librairie via l'IDE.