Arduino - LCD

Dans ce tutoriel Arduino LCD, nous apprendrons comment connecter un LCD (afficheur à cristaux liquides) à une carte Arduino. Les LCD sont très populaires et largement utilisés dans les projets électroniques pour afficher des informations. Il existe de nombreux types de LCD. Ce tutoriel prend comme exemple le LCD 16x2 (16 colonnes et 2 lignes). Les autres LCD sont similaires.

※ NOTE THAT:

Si vous souhaitez simplifier le câblage, vous pouvez utiliser un LCD I2C. Consultez le tutoriel LCD I2C

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×LCD
1×Potentiometer
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos de l'écran LCD 16x2

Brochage

Brochage LCD

L'écran LCD possède jusqu'à 16 broches. Dans les utilisations les plus courantes, nous n'utilisons pas toutes les broches.

Avec le soutien de la bibliothèque LiquidCrystal, nous pouvons même utiliser un LCD SANS connaître la signification de ces broches. Cependant, si vous êtes curieux ou souhaitez connaître en détail, voyons ces broches et leur fonctionnalité :

  • Broche GND : doit être connectée au GND (0V).
  • Broche VCC : l'alimentation pour l'écran LCD, doit être connectée à VCC (5V).
  • Broche Vo (Contraste LCD) : contrôle le contraste et la luminosité de l'écran LCD, peut être connectée à 5V (le contraste et la luminosité les plus élevés), ou connectée à un potentiomètre (pour ajuster le contraste et la luminosité).
  • Broche RS (Sélection de registre) : Il y a deux types de données à envoyer à l'écran LCD : commande (pour contrôler l'écran LCD) et données. Ces deux types sont envoyés sur le même bus de données. La broche RS indique à l'écran LCD si les données sur le bus de données sont des commandes ou des données.
    • Si nous voulons envoyer la commande pour contrôler l'écran LCD, nous devons régler la broche RS sur LOW (comme définir le curseur à un emplacement spécifique, effacer l'affichage...).
    • Si nous voulons envoyer les données à afficher sur l'écran LCD, nous devons régler la broche RS sur HIGH.
  • Broche R/W (Lire/Écrire) : permet de sélectionner le mode LECTURE ou ÉCRITURE.
    • Si nous voulons lire les données de l'écran LCD, cette broche doit être réglée sur HIGH.
    • Si nous voulons envoyer des données à l'écran LCD, cette broche doit être réglée sur LOW. Comme nous utilisons simplement cet écran LCD comme un dispositif de SORTIE, nous allons relier cette broche à LOW.
  • Broche EN (Activer) : est utilisée pour activer l'écran LCD. HIGH pour activer l'écran LCD, LOW pour désactiver l'écran LCD.
  • Broches D0-D7 (Bus de données) : transporte les données et les commandes entre l'Arduino et l'écran LCD. Il y a deux modes pour envoyer des données : mode 4 bits et mode 8 bits.
  • Broches A-K (Anode & Cathode) : sont utilisées pour alimenter le rétroéclairage de l'écran LCD. La broche A doit être connectée à VCC. La broche K doit être connectée à GND.

Mode 4 bits et mode 8 bits

  • Mode 8 bits : 8 bits d'un octet sont envoyés en même temps de la broche D0 à D7.
  • Mode 4 bits : 8 bits d'un octet sont envoyés deux fois, chaque fois 4 bits dans les broches D4 à D7.

Le mode 8 bits est plus rapide que le mode 4 bits, mais utilise plus de broches que le mode 4 bits. La sélection du mode est effectuée lors du processus d'initialisation en envoyant une commande à l'écran LCD.

Ce tutoriel utilise le mode 4 bits, qui est le plus couramment utilisé.

Dans ce mode, les broches de l'écran LCD :

  • 6 broches (RS, EN, D4, D5, D6 et D7) sont connectées à la broche d'Arduino.
  • 4 broches (D0, D1, D2 et D3) ne sont PAS connectées.
  • Les 6 broches restantes sont connectées à GND/VCC ou au potentiomètre.

Tableau des broches LCD en mode 4 bits

LCD PINCONNECTED TO
01GNDGND
02VCC5V
03Vo5V or potentiometer's pin
04RSAn Arduino's pin
05R/WGND
06ENAn Arduino's pin
07D0NOT connected
08D1NOT connected
09D2NOT connected
10D3NOT connected
11D4An Arduino's pin
12D5An Arduino's pin
13D6An Arduino's pin
14D7An Arduino's pin
15A5V
16KGND

Coordonnées LCD

LCD 16x2 inclut 16 colonnes et 2 rangées. Les colonnes et les rangées sont indexées à partir de 0.

Coordonnées LCD Arduino

Comment ça marche

Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.

Le processus d'envoi de données (à afficher) vers un écran LCD :

i. Arduino positionne la broche RS sur HIGH (pour sélectionner le registre de données).

ii. Arduino écrit les données sur les broches D4 → D7 (bus de données).

iii. L’écran LCD reçoit les données sur le bus de données.

iv. L’écran LCD stocke les données reçues dans la résistance de données puisque la broche RS est sur HIGH. Ensuite, l'écran LCD affiche les données à l'écran.

Le processus d'envoi de commande (pour contrôler) à un écran LCD (par exemple, faire clignoter l'écran LCD, positionner le curseur à un endroit spécifique, effacer l'affichage...) :

i. Arduino positionne le pin RS sur LOW (pour sélectionner le registre de commande).

ii. Arduino écrit une commande sur les pins D4 → D7 (bus de données).

iii. L'écran LCD reçoit les données sur le bus de données.

iv. L'écran LCD stocke les données reçues dans le registre de commande puisque le pin RS est sur LOW. Ensuite, l'écran LCD agit en fonction de la valeur de la commande.

Arduino - LCD

Contrôler un écran LCD est une tâche plutôt compliquée. Heureusement, grâce à la bibliothèque LiquidCrystal, cette bibliothèque simplifie le processus de contrôle de l'écran LCD pour vous, de sorte que vous n'avez pas besoin de connaître les instructions de bas niveau. Il suffit de connecter l'Arduino à l'écran LCD et d'utiliser les fonctions de la bibliothèque. Utiliser un écran LCD devient un jeu d'enfant.

Diagramme de câblage

Schéma de câblage de l'écran LCD Arduino

This image is created using Fritzing. Click to enlarge image

Comment programmer pour un écran LCD

  • Inclure la bibliothèque :
#include <LiquidCrystal.h>
  • Définissez quel pin de l'Arduino est connecté aux six pins de l'écran LCD : RS, EN, D4, D4, D6, D7
const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5;

L'un des avantages de la bibliothèque est que la broche de l'Arduino connectée à l'écran LCD est configurable. Cela offre une flexibilité lors de la connexion de l'Arduino avec l'écran LCD et d'autres capteurs/actionneurs.

  • Déclarez un objet LiquidCrystal :
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
  • Configurez le nombre de colonnes et de rangées du LCD.
lcd.begin(16, 2);
  • Déplacez le curseur à la position souhaitée (index_colonne, index_ligne)
lcd.setCursor(column_index, row_index);
  • Afficher un message sur l'écran LCD.
lcd.print("Hello World!");

Il y a bien d'autres choses que nous pouvons faire avec les écrans LCD (voir la partie Faites plus avec les LCD).

※ NOTE THAT:

Vous pouvez choisir n'importe quel six broches d'Arduino pour vous connecter à l'écran LCD, tant que vous spécifiez la broche connectée dans le code Arduino.

Code Arduino

#include <LiquidCrystal.h> // Broches LCD <--> Broches Arduino const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); void setup() { lcd.begin(16, 2); // configurer le nombre de colonnes et de lignes lcd.setCursor(0, 0); // déplacer le curseur à (0, 0) lcd.print("Arduino"); // afficher le message à (0, 0) lcd.setCursor(2, 1); // déplacer le curseur à (2, 1) lcd.print("GetStarted.com"); // afficher le message à (2, 1) } void loop() { }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload de l'IDE Arduino pour téléverser le code sur Arduino
  • Observez le résultat sur l'écran LCD
Afficher du texte sur un écran LCD avec Arduino
  • Essayez de modifier le texte et la position.

Vidéo

Personnage personnalisé

La fonction lcd.print() ne prend en charge que les caractères ASCII. Si vous souhaitez afficher un caractère spécial ou un symbole (par exemple, un cœur, un oiseau en colère), vous devez utiliser le générateur de caractères ci-dessous.

L'écran LCD 16x2 peut afficher 32 caractères (2 lignes et 16 colonnes). Chaque caractère est composé de 40 pixels (8 lignes et 5 colonnes).

Arduino LCD 16x2 pixels

Le générateur de caractères représente un caractère (40 pixels). Vous devez simplement suivre les étapes suivantes :

Click on each pixel to select/deselect


Copy below custom character code
Replace the customChar[8] in the below code
#include <LiquidCrystal.h> // Broches LCD <--> Broches Arduino const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.begin(16, 2); // configurer le nombre de colonnes et de rangées lcd.createChar(0, customChar); // créer un nouveau caractère personnalisé lcd.setCursor(2, 0); // déplacer le curseur à (2, 0) lcd.write((byte)0); // imprimer le caractère personnalisé à (2, 0) } void loop() { }

Résultat sur l'écran LCD :

Caractère personnalisé LCD

Plusieurs personnages personnalisés

Nous pouvons créer jusqu'à 8 caractères personnalisés (indexés de 0 à 7). L'exemple ci-dessous crée et affiche trois caractères.

#include <LiquidCrystal.h> // Broches LCD <--> Broches Arduino const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.begin(16, 2); // Configurer le nombre de colonnes et de lignes lcd.createChar(0, customChar0); // Créer un nouveau caractère personnalisé (index 0) lcd.createChar(1, customChar1); // Créer un nouveau caractère personnalisé (index 1) lcd.createChar(2, customChar2); // Créer un nouveau caractère personnalisé (index 2) lcd.setCursor(2, 0); // déplacer le curseur à (2, 0) lcd.write((byte)0); // afficher le caractère personnalisé 0 à (2, 0) lcd.setCursor(4, 0); // déplacer le curseur à (4, 0) lcd.write((byte)1); // afficher le caractère personnalisé 1 à (4, 0) lcd.setCursor(6, 0); // déplacer le curseur à (6, 0) lcd.write((byte)2); // afficher le caractère personnalisé 2 à (6, 0) } void loop() { }

Résultat sur l'écran LCD :

Caractères personnalisés multiples LCD

Résumé : comment utiliser un caractère personnalisé sur un écran LCD

  • Utilisez le générateur de caractères ci-dessus pour créer le code binaire du caractère personnalisé.
  • Déclarez le code binaire pour le caractère personnalisé (copiez de l'étape précédente)
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Créez un caractère personnalisé et attribuez-le à une valeur d'indice (de 0 à 7) dans la fonction setup().
lcd.createChar(index, customChar);
  • Affichez le caractère personnalisé sur l'écran LCD n'importe quand, n'importe où (dans les fonctions setup() ou loop())
lcd.setCursor(column, row); // déplacer le curseur à la position souhaitée lcd.write((byte)index); // imprimer le caractère personnalisé à la position souhaitée

Mettez-vous au défi

Utilisez un écran LCD pour réaliser l'un des projets suivants :

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!