[RESOLU] Afficheur LCD grove 16*2 - problème de code

Bonjour, je suis débutant et j'ai encore beaucoup de chose à apprendre mais je ne trouve pas de solution à mon problème.

Je possède un afficheur Grove LCD 16*2 de chez seeedstudio , une carte arduino R4 minima et un base shield pour connecter le tout .

Mon problème est que l'afficheur n'affiche pas ce que je voudrais.

Tout d'abord je suis sur que le base shield + la carte fonctionne bien car un buzzer est deja branché dessus et fonctionne parfaitement.

Quand je teste le code fourni en exemple par le fournisseur "hello world" l'écran affiche une ligne noire qui s'allume et s'éteint toute les secondes.

voici le code :

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;

const int colorR = 255;
const int colorG = 0;
const int colorB = 0;

void setup() {
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);

    lcd.setRGB(colorR, colorG, colorB);

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

    delay(1000);
}

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);

    delay(100);
}

quand je teste le code "blink" l'écran affiche "o!" en haut a gauche et fais clignoter le 3eme caractère toute les 3 secondes pendant 3 secondes (comme écrit dans le code)
voici le code

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;


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!");

    delay(1000);
}

void loop() {
    // Turn off the blinking cursor:
    lcd.noBlink();
    delay(3000);
    // Turn on the blinking cursor:
    lcd.blink();
    delay(3000);
}

l'exemple "autoscroll" semble lui bien fonctionner. Les numéros s'affiche à la suite sur la premiere ligne puis l'écran s'efface
voici le code

#include <Wire.h>
#include "rgb_lcd.h"

rgb_lcd lcd;


void setup() {
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
}

void loop() {
    // set the cursor to (0,0):
    lcd.setCursor(0, 0);
    // print from 0 to 9:
    for (int thisChar = 0; thisChar < 10; thisChar++) {
        lcd.print(thisChar);
        delay(500);
    }

    // set the cursor to (16,1):
    lcd.setCursor(16, 1);
    // set the display to automatically scroll:
    lcd.autoscroll();
    // print from 0 to 9:
    for (int thisChar = 0; thisChar < 10; thisChar++) {
        lcd.print(thisChar);
        delay(500);
    }
    // turn off automatic scrolling
    lcd.noAutoscroll();

    // clear screen for the next loop:
    lcd.clear();
}

De plus quand je fais des tests et que je téléverse le même code , l'afficheur ne donne pas le même résultat. parfois en changeant un numéro de ligne ou colonne j'ai des résultats complétement aléatoire avec des caractères qui s'affichent et clignote n'importe comment.

j'avoue que je suis un peu perdu et je ne comprend pas bien comment cela est censé fonctionner.

Merci a tout ceux qui prendrons le temps de lire ce message.

vous avez un lien vers cet afficheur ?
Qualité de vos câble et alim ?

Bonjour, merci pour votre réponse

voici la doc fabricant

tout est déjà précablé, j'arrive à faire clignoter des led

il y a encore des vieilles versions qui trainent à la vente, dans la doc ils disent

If you have an older version on your hand, you can solder a 10kΩ DIP resistor yourself on the back pad of the Grove connector. Please follow the picture below, solder a 10kΩ DIP resistor between VCC and SCL pins and a 10kΩ DIP resistor between VCC and SDA pins.


vous avez vérifié si vous avez les résistances ?

vous avez un autre arduino que le R4 ?

j'ai bien la dernière version,

le vendeur m'affirme que chez lui cela fonctionne bien avec la R4

OK - vous avez utilisé quelles pins pour vous connecter ?

utilisez celles ci

vous pouvez partager un photo du montage ?

le shield se branche directement sur les PIN de la arduino, puis l'afficheur sur le port I2C

j'ai utilisé ce matériel afin de faciliter les branchements et de diminuer la difficulté des montages dans un premier temps.
mais je ne savais pas que c'était pas une méthode peut courante

avez vous des fils DUPONT mâle - femelle ?

en prenant la photo, j'ai remarqué par hasard hasard qu'il y a un interrupteur sur le shield qui permet d'allumer éteindre le shield.
Maintenant qu'il est allumé la LED verte que je trouvais faible et entièrement allumée et tout fonctionne.

Comme a chaque fois avec les débutants le problème est super simple et plutôt stupide ...
Désolé du dérangement, merci de votre temps

Il y a sur le shield la présence d'un interrupteur à coté de la LED verte (voir photo 1), une fois l'interupteur allumé la LED éclaire plus fortement (voir photo 2)

photo 1

photo 2

super - c'est souvent en discutant qu'on se rend compte de petit soucis tout bête

content pour vous - bonne fin d'année.

PS : la bibliothèque que vous utilisez est très vieille et pas très optimisée pour ces afficheurs HD44780

si vous installez

et essayez ce code :

#include <Wire.h>
#include <hd44780.h>                        // main hd44780 header
#include <hd44780ioClass/hd44780_I2Cexp.h>  // i2c expander i/o class header

const uint8_t nbCols = 16;
const uint8_t nbRows = 2;
hd44780_I2Cexp lcd;

void setup() {
  Serial.begin(115200);
  int result = lcd.begin(nbCols, nbRows);
  if (result) {
    Serial.print("LCD initialization failed: ");
    Serial.println(result);
    hd44780::fatalError(result);
  }

  lcd.clear();
  lcd.print("BONJOUR");
}

void loop() {}

ça devrait fonctionner aussi.

Bon réveillon à vous aussi !

Quelque chose me dis que je viendrais souvent sur ce forum en 2025 !

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.