Un afficheur 16 caractères sur 2 lignes est la sortie la plus lisible qu’on puisse donner à un montage : du texte, pas des chiffres à déchiffrer. Le LCD 16 × 02 affiche cette quantité de texte avec le jeu d’instructions du contrôleur HD44780, la référence que toutes les bibliothèques Arduino savent piloter sans adaptation.
Sa particularité tient dans son brochage : seize broches sur un pas de 2,54 mm, dont huit pour les données. On n’est pas obligé de les utiliser toutes. En mode 4 bits, quatre fils de données suffisent et l’afficheur se pilote avec six fils en tout, ce qui laisse à la carte la place des capteurs. C’est le mode utilisé dans le montage de cette page.
Caractéristiques techniques
| Format | 2 lignes de 16 caractères, chaque caractère dessiné sur une matrice de 5 × 8 points |
|---|---|
| Contrôleur | Compatible HD44780 : jeu d’instructions standard, donc pris en charge par les bibliothèques Arduino sans adaptation |
| Connecteur | 16 broches au pas de 2,54 mm, sérigraphiées de 1 à 16 sur la carte |
| Interface | Parallèle, en 8 bits ou en 4 bits. Trois lignes de commande seulement : RS, R/W, E |
| Rétroéclairage | Diodes électroluminescentes derrière l’écran, alimentées par les broches 15 (A) et 16 (K) |
| Affichage | Fond sombre à texte clair sur ce modèle — un écran à fond vert et texte sombre existe aussi, le câblage reste identique |
| Alimentation | 5 V pour la logique. Le rétroéclairage s’ajoute à la consommation, quelques dizaines de milliampères selon l’écran |
| Mémoire de caractères | 8 emplacements libres : on peut dessiner ses propres symboles, puis les appeler par leur numéro |
| Bibliothèque Arduino | LiquidCrystal, livrée avec l’IDE Arduino — rien à installer depuis le gestionnaire de bibliothèques |
| Réglage du contraste | Par la broche V0 (broche 3) : un potentiomètre entre la masse et le 5 V dont le curseur alimente V0 |
Brochage des seize broches
La numérotation se lit sur la sérigraphie de la carte, côté connecteur. Elle est identique d’un module à l’autre : c’est le brochage standard de la famille.
| 1 — GND | Masse, commune avec celle de la carte de commande |
|---|---|
| 2 — VDD | Alimentation de la logique, 5 V |
| 3 — V0 | Réglage du contraste : curseur du potentiomètre |
| 4 — RS | Sélection registre — commande ou donnée |
| 5 — R/W | Lecture ou écriture : à relier à la masse, le montage n’écrit jamais dans l’afficheur |
| 6 — E | Validation, l’horloge du bus parallèle |
| 7 à 10 — D0 à D3 | Quatre bits de poids faible, laissés libres en mode 4 bits |
| 11 à 14 — D4 à D7 | Les quatre bits utilisés en mode 4 bits, transmis en deux temps par caractère |
| 15 — A | Anode du rétroéclairage, à alimenter en 5 V |
| 16 — K | Cathode du rétroéclairage, à la masse |
Le mode 4 bits, et pourquoi il change tout
En mode 8 bits, l’afficheur reçoit un octet entier d’un coup : huit fils de données occupent la carte. En mode 4 bits, le contrôleur reçoit le même octet en deux moitiés envoyées l’une après l’autre. Rien ne change à l’écran, la bibliothèque s’en charge, mais quatre broches sont libérées. Sur une Uno, c’est la différence entre un montage qui tient et un montage qui réclame un port d’extension.
Les autres lignes se réduisent à trois. RS indique s’il s’agit d’une commande ou d’un caractère à afficher, E valide chaque envoi, et R/W reste à la masse : le montage écrit dans l’afficheur sans jamais lui demander de répondre. Au total, six fils entre la carte et l’afficheur, dont deux pour l’alimentation.
Le contraste : la seule broche à ne pas oublier
Un afficheur correctement câblé mais sans tension sur V0 affiche des cases sombres sur toute la ligne, ou rien du tout — et l’erreur est fréquente, parce que le montage paraît alors défectueux. V0 attend une tension continue ajustable entre la masse et l’alimentation, quelques centaines de millivolts suffisent en général, d’où l’usage d’un potentiomètre 10 kΩ monté en pont diviseur : les deux extrémités du potentiomètre vont au 5 V et à la masse, le curseur va sur V0. On tourne jusqu’à ce que le texte apparaisse.
Avec un potentiomètre de 10 kΩ, la plage de réglage est assez large pour toutes les séries de cette famille : il n’y a pas de valeur critique à trouver, il suffit que le réglage soit progressif. Une résistance fixe fonctionne aussi mais ne se rattrape pas si le contraste du module acheté est décalé.
Applications
- Banc de mesure — température, tension, distance, poids, avec l’unité écrite en toutes lettres à côté de la valeur.
- Afficheur d’état d’un automate — étape en cours, message d’erreur, consigne courante sur un montage fixe.
- Station météo — deux lignes suffisent pour la température et l’humidité, ou pour la mesure et l’heure.
- Minuterie ou horloge — heure d’un côté, date ou état de la minuterie de l’autre, avec une horloge temps réel DS3231 pour garder l’heure juste.
- Interface d’un projet pédagogique — les messages remplacent les clignotements de LED quand il faut expliquer ce que fait le programme.
Mini-projet : un télémètre à ultrasons
Deux lignes, deux informations : la distance mesurée en haut, l’état de la voie en bas. Le programme ne demande aucune bibliothèque supplémentaire, le capteur à ultrasons se mesure avec pulseIn().
Ce qu’il faut
| L’afficheur | Le LCD 16 × 02 de cette page |
|---|---|
| Le cerveau | Uno R3 + cable usb |
| La mesure | Capteur à ultrasons HC-SR04 |
| Le contraste | Potentiomètre 10 kΩ |
| Le support | Plaque d’essai 400 points |
| Les liaisons | 10 × fil mâle-mâle 10 cm et un lot de résistances 220 Ω pour le rétroéclairage |
Le câblage
L’afficheur se branche en mode 4 bits, comme dans le tableau ci-dessous. R/W part directement à la masse : une seule ligne à retenir pour ce fil, et une erreur de moins à chercher.
LCD 1 GND | → Arduino GND |
|---|---|
LCD 2 VDD | → Arduino 5V |
LCD 3 V0 | → curseur du potentiomètre 10 kΩ (extrémités du potentiomètre au 5V et au GND) |
LCD 4 RS | → Arduino D12 |
LCD 5 R/W | → Arduino GND |
LCD 6 E | → Arduino D11 |
LCD 11 D4 | → Arduino D5 |
LCD 12 D5 | → Arduino D4 |
LCD 13 D6 | → Arduino D3 |
LCD 14 D7 | → Arduino D2 |
LCD 15 A | → 5V par une résistance de 220 Ω |
LCD 16 K | → Arduino GND |
HC-SR04 VCC | → Arduino 5V |
HC-SR04 GND | → Arduino GND |
HC-SR04 TRIG | → Arduino D9 |
HC-SR04 ECHO | → Arduino D10 |
Le programme
À copier dans l’IDE Arduino et à téléverser sur la carte :
/*
* Telimetre a ultrasons sur afficheur LCD 16 x 02, en mode 4 bits
* Carte : Arduino Uno -- HC-SR04 sur D9 (TRIG) et D10 (ECHO)
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "LiquidCrystal.h"
const byte RS = 12; // selection registre ou donnee
const byte EN = 11; // validation
const byte D4 = 5;
const byte D5 = 4;
const byte D6 = 3;
const byte D7 = 2;
const byte TRIG = 9; // emission de l'impulsion
const byte ECHO = 10; // retour de l'echo
const long SEUIL_CM = 20; // distance d'alerte en centimetres
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Telemetre pret");
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
delay(1000);
}
long mesurer() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
unsigned long duree = pulseIn(ECHO, HIGH, 30000UL); // 30 ms de delai maximal
return duree / 58; // 58 us par centimetre
}
void loop() {
long cm = mesurer();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance : ");
lcd.print(cm);
lcd.print(" cm");
lcd.setCursor(0, 1);
if (cm != 0 && SEUIL_CM >= cm) {
lcd.print("OBSTACLE PROCHE");
} else if (cm != 0) {
lcd.print("voie libre");
} else {
lcd.print("hors portee");
}
delay(300);
}Comment ça marche
- Le constructeur
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7)ne reçoit que six broches : c’est lui qui choisit le mode 4 bits. Donner huit broches reviendrait à câbler D0 à D3 pour rien. lcd.begin(16, 2)déclare le format de l’afficheur. Une valeur fausse ne casse pas le montage, mais décale le découpage des lignes en mémoire et l’affichage devient incohérent au-delà de la seizième colonne.- Le HC-SR04 ne renvoie pas une distance : il renvoie la durée d’un aller-retour d’ultrasons. Le son parcourt environ 29 microsecondes par centimètre, soit 58 pour l’aller-retour, d’où la division finale.
pulseIn(ECHO, HIGH, 30000UL)abandonne au bout de 30 millisecondes. Sans ce délai maximal, une mesure dans le vide ferait patienter la bibliothèque pendant près de deux secondes et l’affichage se figerait.- Une durée nulle veut dire qu’aucun écho n’a été capté : la mesure est marquée « hors portee » plutôt qu’affichée comme une distance, ce qui évite d’annoncer une valeur fausse.
- Le
delay(300)borne le rythme de mesure. L’afficheur est lent comparé au microcontrôleur : sans cette temporisation, l’écran scintillerait pendant que les mesures se succèdent.
Variante : libérer les broches avec l’adaptateur I2C
Six fils deviennent quatre avec un adaptateur I2C pour afficheur LCD soudé ou vissé au dos : SDA, SCL, l’alimentation, et le contraste se règle avec le petit potentiomètre du module. Deux afficheurs, ou un afficheur et un capteur de même adresse, peuvent alors cohabiter sur le même bus. Le programme change de bibliothèque — LiquidCrystal_I2C — et le principe reste le même, avec lcd.init() à la place de lcd.begin(). Pour cette option sans soudure, l’afficheur LCD 16 × 02 en I2C est livré avec l’adaptateur déjà en place.
Si le texte compte plus que la place, le même contrôleur existe en plus grand : l’afficheur LCD 20 × 04 offre quatre lignes de vingt caractères et se câble exactement comme celui-ci, en changeant la seule ligne lcd.begin(). Et si c’est la taille des caractères qui manque, l’afficheur quatre chiffres TM1637 se lit à plusieurs mètres.
Questions fréquentes
L’écran affiche une ligne de cases sombres, ou rien
C’est presque toujours le contraste. V0 doit recevoir une tension intermédiaire : vérifiez que le curseur du potentiomètre est bien sur la broche 3 et que les deux autres pattes vont, l’une au 5 V, l’autre à la masse. Si le réglage ne donne rien, la cause suivante est la masse commune entre l’afficheur et la carte, puis un fil de données décalé d’une position — un décalage d’une seule broche suffit à faire afficher n’importe quoi.
Y a-t-il une différence entre un écran bleu et un écran vert ?
Aucune sur le plan électrique ni sur le brochage : le contrôleur et les seize broches sont identiques. Le bleu est à fond sombre et texte clair, le vert à fond clair et texte sombre. Sur un montage alimenté en 5 V, les deux se lisent aussi bien ; l’écran bleu demande simplement une tension directe plus élevée pour le rétroéclairage.
Faut-il une résistance pour le rétroéclairage ?
Si l’afficheur n’embarque pas sa propre résistance de limitation, oui : une 220 Ω entre le 5 V et la broche 15 (A) est la valeur d’usage pour un rétroéclairage alimenté en 5 V, la broche 16 (K) allant à la masse. Si votre module porte déjà sa résistance, il s’alimente directement en 5 V. Dans le doute, partez de la résistance : l’écran est un peu moins lumineux, mais il ne s’abîme pas.
Peut-on afficher des lettres accentuées ou de l’arabe ?
Pas directement. Le jeu de caractères gravé dans un afficheur de cette famille couvre l’alphabet latin non accentué, les chiffres et la ponctuation, sans les lettres accentuées du français ni les lettres arabes. La solution prévue par le contrôleur est ailleurs : huit emplacements de caractères sont libres, et on y dessine les symboles dont on a besoin — un « é », un « è », un pictogramme — en envoyant la suite de points de chaque ligne. Une fois définis au démarrage, ces caractères s’affichent comme les autres.
Combien d’afficheurs peut-on brancher sur une même carte ?
En mode 4 bits, six fils chacun, et une Uno en accepte deux sans difficulté ; au-delà, les broches manquent. En I2C, deux afficheurs cohabitent sur les deux mêmes fils en changeant l’adresse de l’un des adaptateurs. Le choix se décide donc d’abord sur le nombre de broches libres qu’il vous reste, pas sur la taille de l’écran.
Faut-il vraiment relier la broche R/W ?
Oui, mais une seule fois, à la masse. Cette ligne indique à l’afficheur s’il doit recevoir ou transmettre des données. Le montage n’a jamais besoin de lire l’afficheur : la laisser en l’air donne un module qui répond au hasard. C’est l’un des fils les plus souvent oubliés, avec le contraste.
À combiner avec
Le Kit Arduino Uno maroc réunit la carte, la plaque d’essai, les fils et des composants : avec l’afficheur en plus, le télémètre de cette page se monte tel quel. Si vous partez de zéro, le trio Uno R3 + cable usb, plaque d’essai 400 points et fils mâle-mâle suffit, avec un potentiomètre 10 kΩ pour le contraste. Pour un deuxième afficheur sur la même carte, l’afficheur LCD 16 × 02 en I2C ou l’afficheur TM1637 libère des broches ; et pour transformer l’affichage en alarme, un mini bouton poussoir ou un capteur DHT11 complète le montage.










