Impossible de faire fonctionner un écran LCD I2C

Bonjour,

Je débute en électronique, j'ai acheté un kit Arduino avec un Funduino (Arduino Compatible), quelques petits composants et fils, et aussi un écran LCD I2C.

Je vous donne la référence (presque) complète : Arduino IIC/I2C/TWI SPI Serial LCD 1602 Module. Avec une sorte de convertisseur I2C à l'arrière : YwRobot Arduino LCM1602 IIC V1. Mais impossible de le faire fonctionner ! J'ai branché GND sur GND, VCC sur 5V, SDA sur la sortie analogique 4 et SCL sur la sortie analogique 5.

J'ai essayé plusieurs codes comme celui-ci :

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27,16,2);
 
void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.setCursor(1, 1);
  lcd.print('Test');
}
 
void loop()
{
}

Qui m'affiche un 0 en haut à droite.. Mais rien de plus !

Bref je sais pas trop comment ça marche, tous les exemples ne fonctionnent pas, j'ai essayé plein d'adresses mais cela n'a jamais fonctionné (seule la 0x27 fonctionne).

J'ai regardé sur Google, j'ai vu beaucoup de gens qui avait des problèmes similaires.

J'me suis un peu basé sur ça projects:lcd_module - elger.org

Merci de bien vouloir m'aider.

Nustek.

Salut,
je pense avoir le mm materiel que toi.
je ne sais pas si je vais vraiment pouvoir t'aider.

mon code est similaire. sauf pour lcd.print dans la parenthese j'ai des " "

lcd.print("Test");

code au complet.

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

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

//setup
void setup()
{
  lcd.init();                                                   // initialize the lcd 
                                                                      // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!");
  lcd.setCursor(2, 1);
  lcd.print("Test");
}

// loop
void loop()
{
}

la librairie i2c est de quelle origine ?

NOTE! THERE ARE THREE (or More??) VERSIONS OF THE 2 and 4 LINE DISPLAYS. Check the small "backpack" interface board on the back.

LCD Version 1 - Marked "YwRobot Arduino LCM1602 IIC V1"
LCD Version 2 - Marked "Arduino-IIC-LCD GY-LCD-V1"
LCD Version 3 - Marked "LCM1602 IIC A0 A1 A2"

avec cette version "LiquidCrystal_I2C.h"

NOTE: for displays with backpack interface labelled "YwRobot Arduino LCM1602 IIC V1

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines, turn on backlight

le code complet ici

http://arduino-info.wikispaces.com/LCD-Blue-I2C

ps : il doit y avoir d'autres fils i2c lcd

J'ai testé plus d'une dizaine de librairies I2C, ça n'a jamais fonctionné.
J'ai testé des dizaines du fils différents, essayé d'échanger les fils, ça n'a jamais fonctionné.
J'ai testé avec deux autres Arduino (Un Mega et un autre Uno), ça n'a jamais fonctionné.
J'ai tenté avec 255 adresses différentes, ça n'a jamais fonctionné.
J'ai tenté avec du 3.3V et du 7.5V, ça n'a pas fonctionné.
J'ai regardé sur beaucoup de sites, mais je n'ai jamais trouvé une personne dans mon cas.
J'ai changé le contraste (j'ai essayé à chaque niveau), ça n'a jamais fonctionné.

Je n'ai que 4 fils à plugger (GND, VCC, SDA et SCL).

Et ce qui est spécial, c'est que je n'ai pas exactement les mêmes inscriptions que sur cette photo sur la carte YwRobot :
http://arduino-info.wikispaces.com/file/view/YwRobotLCD-CU-450.jpg/341645320/YwRobotLCD-CU-450.jpg

Je vous prie de bien vouloir m'aider.

T'as fait un scan i2c pour vérifier qu'il répond bien et à quelle adresse ?

Nustek:
J'ai testé plus d'une dizaine de librairies I2C, ça n'a jamais fonctionné.
...
J'ai tenté avec du 3.3V et du 7.5V, ça n'a pas fonctionné.

bonjour
comme B@tto, lance déjà un scan I²C
c'est quoi le composant contrôleur I²C ?
Le PCB comporte les résistances de tirage I²C ?

7.5V ... peut être que maintenant il est cuit

bonjour,
sur le lcd I2C, il y a 3 jumpers.
si tu mets en 0x27 il faut les virer tous les 3, sinon tu pourras chercher sauf changer le 0xYY
attention, il demande 5v, sinon pas de rétro éclairage voir rien du tout.

mets une image des pins utilisées pour l'I2C, ca peut venir de là aussi.
en principe c'est
SCL =>A5
SDA => A4

Voici une photo du mon installation : Photo 1

Mon code :

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

LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}

void loop()
{
}

La librairie utilisée : https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
J'ai pris la V1.2.1.

Et sur la boite y'a marqué : "MAX. VOLTAGE : 7.5V". J'suis pas fou quand même :')

Et le scan donne toujours 0x27 (avec ce code)

Tu as acheté l'ensemble LCD + adaptateur i2c déjà soudés ou c'est toi qui l'a fait ?

C'était déjà ensemble :confused: Je l'ai acheté dans un pack de Hobby Components.

Et t'as fait un scan i2c ?

Sinon je vois qu'il est en 3.3V, il faut du 5V

Oui j'ai fais le scan, lis mes anciens post.

Nustek:
Oui j'ai fais le scan, lis mes anciens post.

puisque le scan repond c'est déjà un doute de levé coté comm I²C
il faut peut être aussi penser à lever le doute du LSD lui-même

a tu essayé de câbler l'afficheur afficheur en mode natif ?

Non, j'y ai pensé, je vais bientôt le faire, à voir si j'arrive à l'enlever facilement..

J'ai galeré moi aussi avec le même que toi
Maintenant cela fonctionne avec cela je te joint aussi la librairie que j'utilise car avec une autre du même non cela ne fonctionnait pas

//ok fonctionne aussi sur nano 04/10/2014
// Example Arduino sketch for SainSmart I2C LCD2004 adapter for HD44780 LCD screens

// Address pins 0,1 & 2 are all permenantly tied high so the address is fixed at 0x27

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

#define I2C_ADDR 0x27 // Define I2C Address where the PCF8574A is
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

int n = 1;
int var = 0;
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

void setup()
{
lcd.begin (16,2);

// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // go home

}

void loop()
{

lcd.home (); // go home

while(var<16){

lcd.setCursor ( var, 1 ); // go to the next line
lcd.write(128);
var++;
delay(500);
//lcd.clear();

}
while(var<255){
lcd.setCursor ( 0, 1 ); // go to the next line
lcd.print(byte(var));
lcd.setCursor ( 0, 0 );
lcd.write(var);
var++;
delay(300);
}

var=0;
lcd.clear();
}

LiquidCrystal.zip (542 KB)

la lib y est jointe

Avant de sortir le fer à souder, y a un truc simple à faire :

Sur le petit PCB, on voit très bien la puce PCF8574.
Vérifie quelle sortie du PCF8574 correspond à quelle entrée du contrôleur LCD (hors tension, à l'ohmmètre).

Cela te permettra de savoir de manière certaine à quel bit du PCF8574 correspond les EN, RS, RW, D0 à D3 etc.