Il existe plusieurs types et formats d'afficheurs LCD. Nous allons parler ici de l'afficheur LCD 2x16 qui affiche deux lignes de texte de 16 caractères chacune. Ces afficheurs sont largement utilisés dans les projets électroniques, les appareils domestiques et les équipements industriels en raison de leur faible consommation d'énergie, de leur facilité d'utilisation et de leur bonne lisibilité.
En réalité, même s'il n'y a que 16 caractères visibles, chaque ligne est est stockée dans une RAM de 40 caractères. Pour voir les caractères cachés, il faut faire défiler l'affichage vers la gauche
La communication avec l'afficheur se fait en parallèle octet par octet sur ce bus. Cependant, l'afficheur supporte un mode 4 bits qui utilise seulement 4 broches (D4...D7), dans ce cas, chaque octet est envoyé en deux temps
Ces broches permettent de gérer le flux de données et les commandes vers l'afficheur LCD
Cette broche permet de contrôler le contraste de l'afficheur. Il faut la connecter au point milieu d'un potentiomètre comme indiqué sur la figure plus bas dans ce document
Certains afficheurs LCD disposent d'un rétroéclairage (backlight) pour améliorer la lisibilité de l'écran dans des conditions de faible luminosité. Ces afficheurs ont deux broches supplémentaires (Anode et cathode) pour alimenter une LED de rétroéclairage. Même si ce n'est pas obligatoire, il est conseillé d'insérer une résistance de faible valeur dans le circuit d'alimentation de la LED de rétroéclairage
L'afficheur n'utilise pas le code ASCII standard mais une version modifiée. Tous les afficheurs du commerce n'utilisent pas le même jeu de caractères, il faut faire des essais:
Exemple : Ω = 0xF4
Exemple : Ω = 0x9A
Exemple : Ω = 0xDE
L'IDE Arduino intègre la bibliothèque LiquidCrystal qui permet d'utiliser ces afficheurs sans en connaître le fonctionnement interne. L'afficheur est utilisé en mode 4 bits ce qui permet de le contrôler avec 6 sorties de l'Arduino
Identique à lcd.print() mais ajoute un retour à la ligne à la fin
#include <LiquidCrystal.h>
LiquidCrystal lcd1(12, 11, 5, 4, 3, 2);
void setup() {
int N = 195;
lcd1.begin(16, 2);
lcd1.print("DEC-HEX-BIN");
lcd1.setCursor(0,1);
lcd1.print(N);
lcd1.write('-');
lcd1.print(N,HEX);
lcd1.write('-');
lcd1.print(N,BIN);
}
void loop() {
}
Le module d'interface I2C pour afficheur LCD 2x16 permet de connecter facilement un l'afficheur à un microcontrôleur ou à une carte de type Arduino via le bus de communication I2C. Ce module simplifie la connexion en réduisant le nombre de broches nécessaires pour contrôler l'afficheur à seulement deux, SDA et SCL en plus de l'alimentation.
Le module se place derrière l'afficheur LCD et doit être soudé aux broches de celui-ci
Il existe une multitudes de librairies qui permettent d'utiliser l'afficheur LCD à l'aide de ce module. Pour ma part j'utilise la librairie LCD_I2C. Pour l'installer :
La librairie LCD_I2C offre les mêmes fonctions (avec les mêmes noms) que la librairie LiquidCrystal. De ce fait, les programmes sont les mêmes, il n'y a que la déclaration et l'initialisation qui changent
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){
lcd.begin(16,2);
lcd.print("Hello World !");
}
void loop() { }
#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 16, 2);
void setup(){
lcd.begin();
lcd.backlight();
lcd.print("Hello World !");
}
void loop() { }