ESP8266 - LCD

Ce tutoriel vous explique comment utiliser un écran LCD avec l'ESP8266, comment programmer l'ESP8266 pour afficher du texte, des caractères spéciaux sur un LCD.

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×LCD I2C
1×Jumper Wires
1×(Optional) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 Screw Terminal Adapter

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 LCD I2C 16x2

Le LCD I2C est une meilleure alternative au LCD standard. Avec seulement 4 broches, il facilite la connexion à l'ESP8266. Un potentiomètre intégré permet de régler facilement le contraste du LCD.

Le brochage LCD I2C

L'écran LCD I2C utilise une interface I2C pour se connecter à l'ESP8266. Il possède 4 broches :

  • Broche GND : Celle-ci doit être connectée à GND (0V).
  • Broche VCC : C'est l'alimentation pour l'écran LCD et doit être connectée à VCC (5V).
  • Broche SDA : C'est le signal de données I2C.
  • Broche SCL : C'est le signal d'horloge I2C.
Brochage LCD I2C

Coordonnée LCD

L'écran LCD I2C 16x2 possède un total de 16 colonnes et 2 rangées. Les colonnes et les rangées sont numérotées à partir de 0.

Coordonnées ESP8266 NodeMCU LCD I2C

Diagramme de câblage

Schéma de câblage LCD I2C ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

LCD I2C ESP8266
Vin Vin
GND GND
SDA D2 (GPIO4)
SCL D1 (GPIO5)

Comment programmer pour un LCD I2C

La bibliothèque LiquidCrystal_I2C doit être incluse pour utiliser l'écran LCD.

  • Configurer l'écran LCD :

L'écran LCD doit être configuré avant de pouvoir être utilisé.

  • Écrivez sur l'écran LCD :

Écrire sur l'écran LCD est simplifié grâce à la bibliothèque LiquidCrystal_I2C.

#include <LiquidCrystal_I2C.h> // Bibliothèque pour LCD
  • Déclarez un objet de la classe LiquidCrystal_I2C, en spécifiant son adresse I2C, le nombre de colonnes et le nombre de lignes.
LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C 0x27, 16 colonnes et 2 lignes
  • Démarrez l'écran LCD.
lcd.init(); //initialiser le lcd lcd.backlight(); //ouvrir le rétroéclairage
  • Placez le curseur à l'emplacement souhaité (indice_colonne, indice_ligne)
lcd.setCursor(column_index, row_index);
  • Afficher un message sur l'écran LCD.
lcd.print("Hello World!");

Explorez les possibilités de ce qui peut être accompli avec un LCD en consultant la section "Faites plus avec LCD".

※ NOTE THAT:

L'adresse du LCD peut varier selon le fabricant. Dans notre code, nous avons utilisé 0x27, qui est spécifié par le fabricant DIYables.

Code ESP8266

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C 0x27, 16 colonnes et 2 lignes void setup() { lcd.init(); // Initialisation de l'écran LCD I2C lcd.backlight(); } void loop() { lcd.clear(); // effacer l'affichage 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) delay(2000); // afficher ce qui précède pendant deux secondes lcd.clear(); // effacer l'affichage lcd.setCursor(3, 0); // déplacer le curseur à (3, 0) lcd.print("DIYables"); // afficher le message à (3, 0) lcd.setCursor(0, 1); // déplacer le curseur à (0, 1) lcd.print("www.diyables.io"); // afficher le message à (0, 1) delay(2000); // afficher ce qui précède pendant deux secondes }

Étapes rapides

Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est votre première utilisation de l'ESP8266.
  • Connectez les composants comme indiqué dans le schéma.
  • Branchez la carte ESP8266 à votre ordinateur via un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Cliquez sur l'icône Libraries dans la barre gauche de l'Arduino IDE.
  • Recherchez "LiquidCrystal I2C" et localisez la bibliothèque LiquidCrystal_I2C créée par Frank de Brabander.
  • Ensuite, cliquez sur le bouton Install pour ajouter la bibliothèque.
Bibliothèque LiquidCrystal I2C ESP8266 NodeMCU
  • Copiez le code et ouvrez-le dans l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et téléverser le code vers l'ESP8266.
  • Vérifiez le résultat sur l'écran LCD.
ESP8266 NodeMCU affiche du texte sur un LCD
  • D'images
  • Expérimentez en modifiant les mots et l'emplacement des images.

Vidéo

Faites plus avec les écrans LCD

Personnage personnalisé

lcd.print() n'accepte que les caractères ASCII. Pour afficher un caractère spécial ou un symbole (par exemple, un cœur, un oiseau en colère), utilisez le générateur de caractères.

Un LCD 16x2 a la capacité d'afficher 32 caractères. Chaque caractère est constitué de 40 pixels, avec 8 lignes et 5 colonnes.

ESP8266 NodeMCU LCD 16x2 pixels

Le générateur de caractères produit un caractère de 40 pixels de taille. Pour l'utiliser, suivez simplement ces étapes :

Click on each pixel to select/deselect


Copy below custom character code
Replace the customChar[8] in the below code
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C 0x27, 16 colonnes et 2 lignes byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // Initialise l'afficheur LCD I2C lcd.backlight(); lcd.createChar(0, customChar); // crée un nouveau caractère personnalisé lcd.setCursor(2, 0); // déplace le curseur à (2, 0) lcd.write((byte)0); // imprime le caractère personnalisé à (2, 0) } void loop() { }

Le résultat affiché sur l'écran LCD est : . Le résultat montré sur l'écran LCD est :

Caractère personnalisé LCD

Plusieurs personnages personnalisés

Nous pouvons créer un maximum de 8 caractères personnalisés, numérotés de 0 à 7. L'exemple suivant crée et affiche trois d'entre eux.

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse I2C 0x27, 16 colonnes et 2 lignes 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.init(); // Initialiser l'afficheur LCD I2C lcd.backlight(); 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); // imprimer le caractère personnalisé 0 à (2, 0) lcd.setCursor(4, 0); // déplacer le curseur à (4, 0) lcd.write((byte)1); // imprimer le caractère personnalisé 1 à (4, 0) lcd.setCursor(6, 0); // déplacer le curseur à (6, 0) lcd.write((byte)2); // imprimer le caractère personnalisé 2 à (6, 0) } void loop() { }

Le résultat affiché sur l'écran LCD est : Le résultat indiqué sur l'écran LCD est :

Caractères personnalisés multiples sur LCD

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

  • Utilisez le générateur de caractères pour générer le code binaire pour votre caractère personnalisé.
  • Copiez le code binaire généré à l'étape précédente et déclarez-le.
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Définissez un caractère de votre propre conception dans la routine setup() et attribuez-lui une valeur numérique entre 0 et 7.
lcd.createChar(index, customChar);
  • Affichez le caractère personnalisé sur l'écran LCD à tout moment, soit dans la fonction setup(), soit dans la fonction loop().
lcd.setCursor(column, row); // déplacer le curseur à une position souhaitée lcd.write((byte)index); // imprimer le caractère personnalisé à la position désirée

Autres fonctions

  • Imprimez "Hello World"

Insérez les fonctions suivantes dans la fonction loop() successivement :

  • Effacer l'écran LCD
  • Attendre 5000 millisecondes
  • Afficher "Hello World"
lcd.clear();
  • Positionnez le curseur dans le coin supérieur gauche de l'écran LCD.
lcd.home();
  • Placez le curseur à une colonne et une ligne spécifiques.
lcd.setCursor(column, row);
  • Affichez le curseur sur l'écran LCD.
lcd.cursor();
  • Rend le curseur LCD invisible.
lcd.noCursor();
  • Afficher le curseur LCD clignotant.
lcd.blink()
  • Désactiver le clignotement du curseur LCD.
lcd.noBlink()

Lancez-vous un défi

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

Dépannage sur LCD I2C

i. Ajustez le contraste de l'écran LCD en tournant le potentiomètre situé à l'arrière de l'écran LCD.

ii. Selon le fabricant, l'adresse I2C de l'écran LCD peut varier. Généralement, l'adresse I2C par défaut de l'écran LCD est soit 0x27, soit 0x3F. Essayez ces valeurs une par une. Si cela ne réussit pas, exécutez le code ci-dessous pour déterminer l'adresse I2C.

// I2C address scanner program #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("I2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for (address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address, HEX); } } if (nDevices == 0) Serial.println("No I2C devices found"); else Serial.println("done"); delay(5000); // wait 5 seconds for next scan }

L'affichage sur le moniteur série est : . L'effet observable sur le moniteur série est : . Ce qui apparaît sur le moniteur série est :

COM6
Send
Scanning... I2C device found at address 0x3F ! done Scanning... I2C device found at address 0x3F ! done
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ 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!