🛠 Afficher sur un LCD 16×2 en bus parallèle 8 bits
Objetivos
Aprovechar los 54 pines de entrada/salida de la Mega 2560 para conectar una pantalla de caracteres HD44780 16×2 en modo de 8 bits completo (ocho líneas de datos D0–D7 más RS, E y RW, es decir, once pines) — un lujo imposible con un Uno sin sacrificar la mitad de sus pines. El bus de 8 bits duplica la velocidad de escritura en comparación con el modo clásico de 4 bits.
Material
- 1 × Arduino Mega 2560 + cable USB
- 1 × pantalla LCD 16×2 basada en HD44780 (conector de 16 pines)
- 1 × potenciómetro de 10 kΩ (contraste en V0)
- 1 × resistencia de 220 Ω (retroiluminación, pin A/K)
- Placa de pruebas y numerosos cables planos/cables
Cableado elegido (pines libres de la Mega): RS=22, RW=23 (conectado a GND para escritura únicamente), E=24, D0–D7 = 25 a 32. LCD: VSS→GND, VDD→5 V, V0→cursor del potenciómetro (las otras dos patas: 5 V y GND). La pantalla está diseñada para lógica de 5 V, la tensión nominal de los pines de la Mega.
Código completo
// 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
}
Verificación esperada
«Mega 2560» y «Bus 8 bits» se muestran en las dos líneas, un contador de segundos se actualiza al final de la primera línea. Al ajustar el potenciómetro, el contraste varía de todo apagado a todo negro.
Errores frecuentes
- Contraste mal ajustado: la pantalla parece muerta aunque el código se esté ejecutando — ajuste V0 antes de buscar un error.
- Confusión de los constructores LiquidCrystal: 10 argumentos = modo de 8 bits, 6 argumentos = modo de 4 bits; mezclar ambos produce caracteres aleatorios.
- RW dejado al aire: debe conectarse a GND si nunca se lee la bandera de ocupado (busy-flag).
- Retroiluminación sin resistencia en A/K: funciona, pero a corto plazo el LED interno se deteriora; un pin nunca debe acercarse a 40 mA.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinodouble-servo.inoArduinopont-uart.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduino