Problème avec un grove lcd rgb backlight

Bonjour, je cherche à faire marcher un écran i2c avec ma carte arduino. J'ai un problème car cela n'affiche rien ni ne change pas les couleurs de l'écran. J'ai pourtant installé les bibliothèques nécessaires. J'ai même essayé avec l'exemple hello world mais rien ...

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Bonjour @elouen et Bienvenue sur ce forum

En arrivant ici prends quelques minutes pour consulter ceci le lien indiqué dans le message de UKHelibob

Donne des détails sur le matériel utilisé, le code et le câblage effectué

Bonjour, @al1fch, merci de l'aide,
J'utilise une carte arduino uno avec un shield groove. Mon écran lcd est celui-ci :Grove - LCD RGB Backlight | Seeed Studio Wiki

J'ai testé plusieurs codes, tel que celui-ci que j'avais réalisé l'année dernière et qui fonctionnait auparavant. Le voici :

#include <Wire.h> //Ajout de la bibliothèque i2c pour utiliser le lcd
#include "rgb_lcd.h" //Ajout de la bibliothèque du lcd

rgb_lcd lcd;  //Constructeur rgb_lcd pour l'objet lcd

int cpt=0; //Déclaration d'un entier "cpt" initialisé à 0 pour compter le nombre de cycles d'affichages

void setup() //Initialisations
{
    lcd.begin(16, 2); //Initialisation du lcd de 16 colonnes et 2 lignes    
}

void loop() //Programme principal
{
    lcd.setCursor(0,0); //On commence à écrire en haut à gauche
    lcd.print("hello, world!"); //On écrit "hello, world!"
    lcd.setCursor(0,1); //On se met sur la ligne du bas à gauche
    lcd.print("STI2D SIN"); //On écrit "STI2D SIN"
    delay(3000); //On attend 3s
    lcd.clear(); //On efface le lcd

    lcd.setCursor(0,0); //On commence à écrire en haut à gauche
    lcd.print("Lycee GT"); //On écrit "Lycee LGT"
    lcd.setCursor(0,1); //On se met sur la ligne du bas à gauche
    lcd.print("L.Rascol Albi"); //On écrit "L.Rascol Albi"
    delay(3000); //On attend 3s
    lcd.clear(); //On efface le lcd

    lcd.setCursor(0,0); //On commence à écrire en haut à gauche
    lcd.print("Affichage : "); //On écrit "Affichage : "
    lcd.setCursor(13,0); //On se met sur la 13 ème colonne de la première ligne
    lcd.print(cpt); //On écrit le contenu de la variable cpt
    delay(3000); //On attend 3s
    lcd.clear(); //On efface le lcd

    cpt++ ;//On incrémente de 1 la variable cpt
}

J'ai aussi essayé l'exemple hello world de la bibliothèque lcd_i2c.
Mes bibliothèques installées sont :
liquid crystal, adafruit rgb lcd shield library, grove lcd rgb backlight, lcd i2c.

J'ai deux écrans I2c et j'ai testé avec les deux, je les branchait sur une broche i2c et j'ai aussi essayé sur plusieurs broches. Ma carte arduino est bien réglée sur 5V.

Hello
Sur ton lien, il est précisé que l'adresse de l'écran peut être 0x30 ou 0x62

Il y a probablement des pastilles au dos de l' écran, ou une pin à forcer à vcc ou gnd.

Regarde un exemple de ta librairie pour voir si l'adresse doit être indiquée dans le programme ou s'il faut le fait dans la librairie.

Il ne manquerait pas un lcd.setRGB() dans le setup() par hasard?

J'ai vérifié le dos de l'écran, tout à l'air correct...
J'ai essayé avec ce code

#include <Wire.h> //Ajout de la bibliothèque i2c pour utiliser le lcd
#include "rgb_lcd.h" //Ajout de la bibliothèque du lcd

rgb_lcd lcd;  //Constructeur rgb_lcd pour l'objet lcd

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

int cpt=0; //Déclaration d'un entier "cpt" initialisé à 0 pour compter le nombre de cycles d'affichages

void setup() //Initialisations
{
    lcd.begin(16, 2);
    lcd.setRGB(colorR, colorG, colorB); //Initialisation du lcd de 16 colonnes et 2 lignes    
}

void loop() //Programme principal
{
    lcd.setCursor(0,0); //On commence à écrire en haut à gauche
    lcd.print("hello, world!"); //On écrit "hello, world!"
    lcd.setCursor(0,1); //On se met sur la ligne du bas à gauche
    lcd.print("STI2D SIN"); //On écrit "STI2D SIN"
       
}

J'ai rajouté un lcd.setgrb ...

Tu es certain de ton câblage:

  • état des connecteurs et fils?
  • bien branché sur un connecteur I2C?
  • shield bien enfoncé sur la UNO?

Le shield a bien la led verte allumée et il est bien mis, oui bien branché sur un connecteur I2C, et l'écran affiche des petits carrés noirs. J'ai essayé avec plusieurs fils ...

y a t'il un potentiomètre de réglage du contraste?

Non il n'y en a pas

Est-ce qu'un scanner I2C "voit" l'écran?
Il devrait apparaître 2 adresses (une pour l'écran, une pour le RGB).

Le scanner n'affiche pas d'erreur mais ne trouve pas l'adresse ...

i2c sur UNO sur A4 et A5
i2c sur mega 2560 sur 20 et 21
si le scan ne trouve pas ton lcd, croise les fils i2c

croiser les fils i2c ?

Le fil qui est sur A4 passe sur A5
Le fil qui est sur A5 passe sur A4

Erreur,
Je viens de vérifier sur ton lien.
Tu utilises le Shield intermédiaire enfichable sur le Uno?
Dans ce cas, il ne peux y avoir d'inversion, puisque c'est vendu câblé d'origine.

Je connais le coup des fils inversés pour les afficheurs LCD en I2C que je dirai "simples"avec la petite platine fille pour l'I2C.

Oui les fils sont déja tous faits. Ce que je n'arrive pas à comprendre c'est que l'année derniere j'y arrivait ...

dans ton lien, ils donnent un lien sur un code compatible avec les nouvelles versions
New code (compatible with both v4.0 and v5.0):
tu as regardé ICI ?

Bonjour elouen,

Tes codes postés en #5 et #7 fonctionnent bien chez moi avec l'écran Grove-LCD RGB v2.0 monté sur un Arduino UNO et shield Grove.
Chez moi ça fonctionne sans, mais tu peux essayer de mettre 2 résistances pull-up de 3-4 kOhm, une entre le SDA et le VCC et une entre le SCL et VCC.
Normalement au dos du circuit imprimé de l'afficheur, les emplacements R9 et R10 à coté du circuit U3 sont sans résistances soudées dessus.

Je vois mal ajouter des résistances du fait que mes cables sont déja fait et je n'ai qu'a les clipser ... Surtout que avant ça marchait.