Go Down

Topic: Problème d'affichage écran LCD 20*4 lignes (Read 4552 times) previous topic - next topic

quentinrenoux

Bonjour tout le monde,

Je suis actuellement en train d'essayer d'afficher du texte sur un écran LCD 20*4 lignes. Mon écran est le DFR0145 de la marque DFRobot (documentation officielle de l'écran).

J'ai correctement branché mon écran sur les pins analog 5 et 4 (le SCL sur le pin 5 et le SDA sur le pin 4) de mon Arduino Uno et j'ai testé plusieurs fois au multimètre mes branchements, tout fonctionne, le problème n'a pas l'air matériel.

Voici le code de mon programme :
Code: [Select]
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
   
LiquidCrystal_I2C lcd(0x20,20,4);

void setup(){
  lcd.init();
  lcd.backlight();
  lcd.home();
  lcd.println("Test");
}
void loop(){
}


Il se compile très bien, j'ai installé correctement les librairies.

Le problème est que normalement, je devrais voir "Test" en haut à gauche de l'écran sauf que je vois que "T" suivi d'un symbole bizarre, quatre barres horizontales.

J'ai regardé à peu près partout et je ne vois personne avec le même problème que moi.

Je précise que cet écran est neuf (il a été sorti de son sachet antistatique ce matin) et que je n'ai touché à aucun jumper ni autre chose.

Merci d'avance pour votre réponse ! :)

dfgh


bricoleau

Bonjour

Les caractères de retour chariot et avancée de ligne ne sont pas gérés par les contrôleurs de LCD.
=> remplace println("Test") par print("Test")
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

quentinrenoux

#3
Jan 27, 2016, 07:59 pm Last Edit: Jan 27, 2016, 08:09 pm by quentinrenoux
Merci pour vos deux réponses ! :)

J'ai remplacé "lcd.println" par "lcd.print" et j'ai n'ai que la première lettre de ma chaîne de caractères, seul le T apparaît sur l'écran à présent.

Artouste

#4
Jan 27, 2016, 08:10 pm Last Edit: Jan 27, 2016, 08:10 pm by Artouste
Merci pour vos deux réponses ! :)

J'ai remplacé "lcd.println" par "lcd.print" et j'ai n'ai que la première lettre de ma chaîne de caractères, seul le T apparaît sur l'écrana présent.
bonsoir
essaie de replacer pour test
lcd.home(); par lcd.setCursor(0,0);


quentinrenoux

Non, encore une fois, cela n'a rien changé, j'ai uniquement le premier caractère qui apparaît.

Je vais tenter de créer une fonction qui affichera caractère par caractère mon mot.

Merci encore une fois à vous :)

bilbo83

Bonjour,

J'utilise également cet afficheur.
Je n'ai jamais pu le faire fonctionner en I2C avec ma carte DUE.
En cherchant à résoudre mon problème je suis tombé sur plusieurs posts évoquant celui du premier caractère affiché.

En voici un parmi d'autres:
http://arduino.stackexchange.com/questions/18015/weird-problem-with-lcd-1602-i2c-shield


Le problème semble venir des librairies, il faut choisir celle qui permet une configuration adaptée au circuit.
Pour moi cela n'a pas fonctionné, mais la librairie la plus adaptée semble être "LiquidCrystal_I2Cv1"

Roger.

bilbo83

Si tu essai avec la librairie ci-dessus, je te donne les paramètres adaptés au DFR0154.

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


quentinrenoux

Merci beaucoup Roger, c'était bien un problème de librairie.

Sinon, j'avais écrit une fonction qui me donnait le même résultat.

Code: [Select]
bool afficher(String phrase, int posx, int posy, LiquidCrystal_I2C lcd){
  if(posx < 20 && posx >= 0 && posy < 4 and posy >= 0){
    for(int i = posx; i< posx+ phrase.length(); i++){
      lcd.setCursor(i, posy);
      lcd.print(phrase.charAt(i));
    }
    return true;
  }
  else{
    return false;
  }
}


Finalement, je n'ai rien eu à changer dans mon code, le seul changement de librairie a suffit à résoudre mon problème. Je joins le zip de la librairie qui fonctionne pour moi en espérant aider ceux qui rencontreront mon problème.

Sinon, merci à tous pour m'avoir aidé :)

Artouste

Bonjour,

J'utilise également cet afficheur.
Je n'ai jamais pu le faire fonctionner en I2C avec ma carte DUE.
En cherchant à résoudre mon problème je suis tombé sur plusieurs posts évoquant celui du premier caractère affiché.

En voici un parmi d'autres:
http://arduino.stackexchange.com/questions/18015/weird-problem-with-lcd-1602-i2c-shield


Le problème semble venir des librairies
bonsoir
c'est bien possible
Je me souviens lors de mes premieres utilisations avec ces petits modules "LCD/I²C" avoir eu des problemes de lib
perso j'utilise cette lib

bilbo83

Oui Artouste tu as raison.
Je l'ai aussi téléchargée.
Je l'ai analysée, pour moi c'est la plus complète.
Elle s'adapte à plusieurs type d'interfaces et d'afficheurs.
Mais il ne faut pas être novice pour l'utiliser.
Dans mon cas, DFR0154 + Arduino DUE, rien à faire.
J'ai tout simplement (si on peut dire), dessoudé le module I2C, et je l'utilise en 4bits parallèles.
Avec la librairie "LiquidCrystalFast" et tout baigne. De plus, même si il y a quelques fils en plus, c'est beaucoup plus rapide.

Roger.

59jag

Bonjour.
j ai la solution
J avais le meme probleme que vous avec un lcdi2c 20x4
j ai test sur plusieurs uno, j ai  toujours seulement 1er chiffre qui s affiche
J ai test different ide et differente librairie meme resultat
J ai test avec un ordinateur plus récents et la miracle ca marche..


Go Up