[Résolu] Problème affichage LCD

Bonsoir !

Essayant enfin de passer du coté LCD avec Arduino, je rencontre un soucis d’affichage comme indiqué sur la photo ici présente :

Pour informations sur mon cablâge, j’ai pris celui-ci, du tutoriel d’OpenClassRoom :

Quand je change la valeur de ma résistance variable, le contraste change, les carrés blancs deviennent invisibles, de ce coté-ci je ne pense pas qu’il y ai problème …

Voici mon code au cas où :

#include <LiquidCrystal.h>

LiquidCrystal lcd(11, 10, 6, 5, 4, 3);

void setup() {
 lcd.begin(16, 2);
 lcd.write("Message");
}

void loop() {
  
}

Si quelqu’un aurai une idée ? J’ai vérifié mon câblage plusieurs fois et n’ai trouvé aucune erreur …

Merci par avance. :wink:

Montre nous ton vrai cablage si tu peux faire une photo.

Pour le code ça a l'air bon mais essaye aussi avec lcd.print("test");
Je ne suis pas sur que lcd.write fonctionne?

Pour le cablage tu peux nous mettre la correspondance par exemple:

/// LCD ///
LCD1 VSS => Ground
LCD2 VDD => +5V
LCD3 V0 => digital pin 6 PWM Contrast
LCD4 RS => digital pin 4
LCD5 RW => digital pin 7
LCD6 E => digital pin 8
LCD7 DB0 => not connected
LCD8 DB1 => not connected
LCD9 DB2 => not connected
LCD10 DB3 => not connected
LCD11 DB4 => digital pin 13
LCD12 DB5 => digital pin 12
LCD13 DB6 => digital pin 11
LCD14 DB7 => digital pin 10
LCD15 LED+ => digital pin 5 PWM Backlight
LCD16 LED- => Ground

Pour l'initialisation perso j'ai 7 valeurs peut etre qu'il t'en manque une:
Par exemple, correspondant au cablage indiqué ci dessus:

LiquidCrystal lcd(4, 7, 8, 13, 12, 11, 10);
// RS, RW, Enable, 4,5,6,7 (Refer to the back of your LCD for details)

Donc pour le tiens il manque peut etre le pin 2?:

LiquidCrystal lcd(11, 10, 6, 5, 4, 3,2);

Mais dans ce cas par rapport à ton schéma tu n'as pas le Enable de connecté sur le pin 6 de l'arduino.

A toi de voir mais je pense que tu as une discordance entre ton cablage et ton init.

D'autre part il me semble que tu as inversé les colonnes et lignes dans l'init, il faut:

const int numRows = 2;
const int numCols = 16;
lcd.begin(numRows, numCols);// set up the LCD's number of rows and columns

Pour moi l'init à 6 valeurs est OK (non utilisation de la pin RW, mise à la masse).

Ton schéma n'est pas en phase avec ton code : sur le schéma tu utilises 5,4,3,2 et dans le code 6,5,4,3 pour les PIN de données.
Et je ne vois pas le branchement anode/cathode du rétroéclairage.

Tu dis que tu fais varier la résistance du contraste. La manip est bien réalisée avec un potentiomètre ?
T'es sûr de pas passer d'un coup d'un extrême à l'autre ? Trop bas on voit rien, trop haut on a des carrés

En résumé faut qu'il revoit tout ça à tête reposée :grin:

LCD.write envoie un caractère à l'afficheur
LCD.print affiche une chaîne représentation d'un caractère, un nombre, d'une chaîne
C'est le même principe que pour Serial.write et Serial.print

J'ai surtout pas apporté assez de détails, vous m'en voyez désolé ! XD

Concernant le schéma, il vient du tutoriel, c'était pour indiquer que je faisais un montage a 4 broches de données. Concernant la concordance de mon code avec les pins Digital -> DX il est juste (à savoir que c'est branché sur les pins 3, 4, 5, 6 de ma carte Arduino, et que cela correspond a ce que j'ai indiqué dans le code si je ne me trompe pas.

Du coté du potentiommètre non je ne suis pas allé trop vite dans les extrêmes, très progressivement mais même à mi-chemin rien ne s'affiche (les carrés ne sont bien sûr pas présents).

Je vais donner plus d'informations, avec une photo, malheureusement je n'ai que des fils longs donc ça fait un peu fouillit ... :

Voici une manquette réalisée avec Fritzing qui, cette fois-ci, représente bel et bien mon montage avec les couleurs appropriées :

/// LCD ///
LCD1 VSS => Ground
LCD2 VDD => +5V
LCD3 V0 => Potentiomètre
LCD4 RS => digital pin 4
LCD5 RW => Ground
LCD6 E => digital pin 8
LCD7 DB0 => not connected
LCD8 DB1 => not connected
LCD9 DB2 => not connected
LCD10 DB3 => not connected
LCD11 DB4 => digital pin 9
LCD12 DB5 => digital pin 10
LCD13 DB6 => digital pin 11
LCD14 DB7 => digital pin 12
LCD15 LED+ => VCC/Resistance
LCD16 LED- => Ground

Autre chose, quand je débranche le VCC l'ecran reste allumé (avec une intensité lumineuse à 75% je dirai), j'ai l'impression que c'est l'µC qui délivre le courant ... Est-ce-normal ?

Je n'ai malheureusement pas de multimètre opérationnel (électronicien du dimanche bonjour) ...

Aucun changement avec write/print sinon. J'ai également essayé le modèle présent dans l'IDE (Hello World).

En espérant avoir été plus clair, merci à vous pour vos réponses !

Bon et bien avoir avoir fait plusieurs essais, cela marche à présent, le tutoriel que j'avais suivi n'avait pas l'air très juste, de ce fait j'ai été induit en erreur au niveau de la création de l'objet LiquidCrystal.

Désolé pour le sujet un peu inutile du coup je me sens bête. :cold_sweat:

Merci de passer ton sujet en résolu :wink: