[Résolu] Problème carrés banc LCD 16x2 (Uno R3)

Bonjour.
Je sais que ce sujet a été traité au moins 1000 fois (si ce n'est plus...) mais pour le coup j'ai réellement tout essayé (vous allez me dire que non, et je serais d'accord mais considérons cette assertion relativement vraie si vous le voulez bien). En effet, depuis 2 semaines maintenant, je me tape ce fameux problème de carré blanc sur la ligne supérieure de mon écran LCD 16x2 connecté à un arduino Uno R3, et impossible d'y faire quelque chose.
Voici tout ce que j'ai tenté :

  • Souder un module I2C à ce même écran (photo jointe)
  • Régler le contraste
  • Mettre mon écran en 4 bits (avec les broches D4 à D7)
  • Mettre un potar de réglage de contraste sur la platine
  • Nettoyer les contacts
  • Changer d'écran LCD
  • Changer d'arduino
  • Changer de platine
  • Modifier le code en testant avec d'autres broches (pourtant j'ai pris des exemple extrêmements simple, vous trouverez les codes sur lesquelles je me suis basé pour tester mon lcd)
  • J'ai suivi à la lettre le tuto fourni dans le kit de démarrange arduino (Boule de crystal mon amour) et, spoiler : ça fonctionne pas
  • Tester les fils avec un multimètre
  • Vérifier s'il y a du courant circulant dans les fils datas (le seul truc que j'ai pu trouver est que lorsque je transmet des infos, l'un des 4 n'envoie pas de courant (j'ai testé avec plusieurs fils et plusieurs endroits sur la platine)
  • Changer de câble USB B
  • L'alimenter via une alimentatione externe
  • Upload le programme via un autre ordi (on sait jamais si le pb venait de là... oui le désespoir m'envahit)
  • Changer les fils
  • Tester l'arduino avec des montages simples (genre avec des leds etc) et le PIRE, c'est que TOUT fonctionne parfaitement (à croire qu'il se fiche de moi :sweat_smile:)

La seule chose que je n'ai pas fait c'est TOUT souder, mais ayant testé plusieurs fois les contacts cela m'étonnerait. Toutefois, s'ils s'avèrent que les réponses sont unanimes, je m'y résoudrais.
Je précise que jusqu'à il y a 2 semaines, tout fonctionnait parfaitement et que c'est lorsque j'ai essayé de reprendre le projet que ça a foiré (j'avais fait quelques erreurs dans mon montage qui ont fait chauffer certains composants de l'arduino, mais qui auraient dû être réglé par le changement d'arduino et de l'écran et des fils...)

Code I2C (je précise que j'ai bien vérifié l'adresse et que l'écran s'éteint puis se rallume) :

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

LiquidCrystal_I2C LCD(0x27,16,2); // définit le type d'ecran lcd 16 x 2

void setup() {
   LCD.init(); // initialisation de l'afficheur
   LCD.backlight();
   
   LCD.setCursor(1, 0);
   LCD.print("HELLO");
  
   LCD.setCursor(8, 1);
   LCD.print("WORLD");
}

void loop() {
   LCD.noDisplay();
   delay(1000);
   LCD.display();
   delay(1000);
}

Code 4 bits :

// include the library code:
#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
}

void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

(oui c'est le code hello world de base mais pas besoin de plus).

Montage I2C :


Montage 4 bits :

Liens des composants utilisés :

Voilà, j'espère avoir donné suffisamment d'information. Je pense étoffer mon post dans les jours qui suivent pour être certain de ne rien avoir oublié !
En tout cas, si vous avez eu des soucis similaires ou que vous avez une idée à laquelle je n'aurais pas pensé (c'est certain) je suis preneur !
Je vous remercie encore et pendant ce temps je continue d'essayer xd

bien sûr que l'adaptateur I2C doit être soudé...

Bonjour,

Je me suis permis de le préciser car dans un topic j'ai vu passer quelqu'un pour qui cela ne fonctionnait pas exactement pour cette raison. De plus, je préfère être trop précis (quitte à passer pour un idiot) qu'oublier des informations importantes !

Non, ce sont les mêmes.

Bonjour,

C'est bien ce qu'il me semblait... Merci xd

On ne voit pas très bien mais il me semble que tu connectes l'afficheur en mettant les fils (étamés?) directement dans les connecteurs de l'Arduino. Tu pourrais avoir des mauvais contacts. Il faut à minima utiliser des broches carrées qui iront bien au fond du contact et assureront une connexion de meilleure qualité.

Testé, cela ne change malheureusement rien :frowning: mais merci beaucoup !

la ref du lcd farnell indique qu'il s'agit d'un lcd I2C, cliquer sur le lien datasheet pour confirmation, avec un protocole i2c spécifique, si c'est sur celui là que tu as mis un backpac a 8574 et que tu fais un i2c scanner, c'est normal qu'il renvoie 0x27 comme adresse
la premiere ligne avec carrés blancs est typique d'un lcd correctement alimenté qui ne reçoit aucune data correcte

achete un lcd 2x16 à interface parallèle à moins de 5 euros, en mode 4/8 bits il faut mettre la broche RW à 0v gnd et ne la relier à rien d'autre

As-tu essayé, dans le code, de faire écrire une ligne faite d'espaces?

LCD.setCursor(1, 0);
 LCD.print("        ");

Ou l'adresse de la première case n'est-elle pas 8 plutôt que 1 ?
Si Y commence à 0, X doit en faire autant.
Comme ceci:

LCD.setCursor(0, 0);
 LCD.print("        ");

Bonjour, merci de votre réponse ! C'est commandé, j'attends de le recevoir et je teste dans la foulée !

Bonjour, j'ai essayé mais l'écran reste désespérément avec une ligne de carré blanc... Légèrement envie de mourir x) mais merci pour votre aide !

pouvez vous clarifier

  • avez vous un ou deux écrans ?
  • si vous avez vous même soudé l'adaptateur I2C sur l'écran ?
  • photo de l'écran vu de dos, sans l'adaptateur I2C

Bonjour, pour répondre à vos questions :

  • Je possède 2 écrans : l'un fourni dans le kit arduino, l'autre que j'ai commandé pour pouvoir souder un module I2C dessus.
  • Je n'ai pas soudé moi-même mais c'est un ami très bon soudeur qui l'a fait :sweat_smile:
  • Voici la photo de l'écran sans l'adaptateur :

Bon, après remplacement de l'écran, il s'avère que :

  • J'ai du griller le lcd fourni avec le kit arduino
  • Les autres écrans à ma disposition ne sont pas compatibles avec un branchement en 4 bits (parallèle) mais sont utilisables uniquement avec un module I2C !

J'ai essayé avec un autre lcd dont voici le lien et ça fonctionne ! https://fr.farnell.com/midas/mc21605c6w-bnmlw-v2/afficheur-alphanumerique-16x2/dp/2675580?srsltid=AfmBOorHN8VDCw-K-vmyOpRK1xLFkAmp2MA54ARKkIhXfhpui_t_vjgm

Merci beaucoup à ceux qui ont pris le temps de répondre à mon post et merci à @chrislemire :sweat_smile:

Essayez avec cette bibliothèque pour l’écran montre en photo