fbpixel
Étiquettes : ,

L’objectif de ce tutoriel est d’apprendre à afficher un message sur son écran LCD en utilisant le module I2C spécial pour LCD. Pour réaliser ce tutoriel, nous avons rencontré quelques difficultés comme pour afficher un mot en entier avec seulement la fonction print() de la Librairie LiquidCrystal. Nous avons donc fait le choix de décortiquer chaque message caractère par caractère afin de contourner ce problème. Ceci permettra de résoudre quelques problèmes que vous aussi vous avez pu rencontrer.

Si votre écran LCD ne possède pas de connexion I2C, suivez ce lien.

Matériel

  • Une arduino Nano (dans l’exemple nous utilisons une Nano mais toute carte Arduino comportant un port I2C convient)
  • Un écran LCD avec son module I2C
  • Connecteurs
img3 Gérer un écran LCD par la connexion I2C d'une Arduino

Schéma électronique

 Gérer un écran LCD par la connexion I2C d'une Arduino

Connectez les ports I2C de l’écran LCD aux ports I2C de l’Arduino Nano ou du Shield Nano utilisé.

  • GND avec la masse Arduino GND
  • Vcc reliée au 5V
  • SCL reliée à la broche A5
  • SDA reliée à la broche A4

Installation de la bibliothèque LCD I2C

Pour pouvoir utiliser l’afficheur, la bibliothèque LiquidCrystal_I2Cdoit être installée :

Ouvrez l’IDE Arduino et aller dans Croquis > inclure une bibliothèque > Gérer les bibliothèques

Screenshot_2020-06-23-pj2-sbc-lcd16x2-fr-1441-pdf-1 Gérer un écran LCD par la connexion I2C d'une Arduino

Dans le gestionnaire de bibliothèques, recherchez «LiquidCrystal_I2C» et installez LiquidCrystalI2C:

 Gérer un écran LCD par la connexion I2C d'une Arduino

Code

Dans le code suivant, un message va s’allumer une fois au démarrage et un autre va s’afficher en boucle.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20(Cooperate with 3 short circuit caps) for a 16 chars and 2 line display

char buff[16]; // char buffer for sprintf
String msg = "Arduino running";
unsigned int count=0;
unsigned long previousTime=0;

void setup(){
 lcd.init();                      // initialize the lcd 
 lcd.backlight();
 lcd.setCursor(0,0);
 lcd.print("Arduino starts ");
 delay(2000);
}

void loop(){
  lcd.setCursor(0,0);
  lcd.print(msg); 
}

Remarque

Si vous rencontrez des problème pour affihcer le texte et ne voyez apparaître que la première lettre du message. Vous pouvez essayer d’afficher les caractères un par un.

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

LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20(Cooperate with 3 short circuit caps) for a 16 chars and 2 line display
char message[16]="Arduino running";
void setup(){
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
}


void loop(){
    int len = strlen(message);
    for (int k=0; k<len; k++)
    {
      lcd.setCursor(k,0);
      lcd.print(message[k]);
    }
}

Bonus: utiliser sprintf pour placer les caractères correctement

Grâce à la fonction sprintf vous pouvez spécifier la longueur de la chaine écrite et placer les caractères à l’intérieur. Dans le code suivant, vous avez deux méthodes pour afficher le compteur. observé la différence

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20,16,2);  // set the LCD address to 0x20(Cooperate with 3 short circuit caps) for a 16 chars and 2 line display

char buff[16]; // char buffer for sprintf
String msg = " Arduino running";
unsigned int count=0;
unsigned long previousTime=0;

void setup(){
 lcd.init();                      // initialize the lcd 
 lcd.backlight();
 lcd.setCursor(0,0);
 lcd.print(" Arduino starts ");
 delay(2000);
}

void loop(){
  
   if(millis() - previousTime>=500){ // every 500ms
    previousTime=millis();
    lcd.setCursor(0,0);
    lcd.print(msg);
    lcd.setCursor(0,1);

    //lcd.print("Counter :   ");lcd.print(count); // to compare with next line

    sprintf(buff, "Counter :  %3d ", count); // use sprintf to place the characters correctly
    lcd.print(buff);
    
    count++;
  }
  
}

arduino-16x2lcd-i2c-result Gérer un écran LCD par la connexion I2C d'une Arduino

Application

  • Créer une interface pour votre projet Arduino

Source