🛠 Afficher sur un LCD 16×2 en bus parallèle 8 bits
Objectifs
Profiter des 54 broches d'entrée/sortie de la Mega 2560 pour câbler un écran à caractères HD44780 16×2 en mode 8 bits complet (huit lignes de données D0–D7 plus RS, E et RW, soit onze broches) — un luxe impossible à côté d'un Uno sans sacrifier la moitié de ses broches. Le bus 8 bits double la vitesse d'écriture par rapport au mode 4 bits classique.
Matériel
- 1 × Arduino Mega 2560 + câble USB
- 1 × écran LCD 16×2 à base de HD44780 (connecteur 16 broches)
- 1 × potentiomètre 10 kΩ (contraste sur V0)
- 1 × résistance 220 Ω (rétroéclairage, broche A/K)
- Plaque d'essai et nombreuses nappe/câbles
Câblage retenu (broches libres de la Mega) : RS=22, RW=23 (liée à GND en écriture seule), E=24, D0–D7 = 25 à 32. LCD : VSS→GND, VDD→5 V, V0→curseur du potentiomètre (les deux autres pattes : 5 V et GND). L'écran est prévu pour la logique 5 V, la tension nominale des broches de la Mega.
Code complet
// LCD 16x2 en bus 8 bits — bibliothèque LiquidCrystal
#include <LiquidCrystal.h>
// (RS, RW, E, D0, D1, D2, D3, D4, D5, D6, D7) : mode 8 bits
LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32);
void setup {
lcd.begin(16, 2);
lcd.print(F("Mega 2560"));
lcd.setCursor(0, 1);
lcd.print(F("Bus 8 bits"));
}
void loop {
lcd.setCursor(11, 0);
lcd.print(millis / 1000); // chrono sur la 1re ligne
}
Vérification attendue
« Mega 2560 » et « Bus 8 bits » s'affichent sur les deux lignes, un compteur de secondes s'actualise en fin de première ligne. En jouant sur le potentiomètre, le contraste varie de tout-éteint à tout-noir.
Erreurs fréquentes
- Contraste mal réglé : l'écran semble mort alors que le code tourne — réglez V0 avant de chercher un bug.
- Confusion des constructeurs LiquidCrystal : 10 arguments = mode 8 bits, 6 arguments = mode 4 bits ; mélanger les deux donne des caractères aléatoires.
- RW laissé en l'air : à lier à GND si on ne lit jamais le busy-flag.
- Rétroéclairage sans résistance sur A/K : ça fonctionne mais à court terme la LED interne fatigue ; une broche ne doit jamais approcher 40 mA.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinodouble-servo.inoArduinopont-uart.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduino