Lección 1.11: Pantalla LCD
Una pantalla de texto independiza el montaje: ya no hace falta el ordenador ni el monitor serie para saber qué está pasando.
Material
Librerías
- LiquidCrystal — incluida con el IDE
Cómo funciona
La LCD 1602 tiene un controlador HD44780 que recibe órdenes y caracteres. El pin RS indica cuál de las dos cosas le envías: a LOW, una orden —borrar, mover el cursor—; a HIGH, un carácter.
Los datos pueden ir en 8 bits o en dos mitades de 4. En modo de 4 bits bastan D4–D7, más RS y E: seis pines en total. E (enable) es el pulso que le dice a la pantalla «lee ahora».
RW elige entre escribir y leer; como aquí solo se escribe, va fijo a GND. El potenciómetro en V0 regula el contraste, no el brillo: mal ajustado, la pantalla parece vacía aunque esté funcionando.
Conexiones
| Componente | Se conecta a | Nota |
|---|---|---|
| LCD, VSS (1) | GND | |
| LCD, VDD (2) | 5V | |
| LCD, V0 (3) | Potenciómetro, pin central | Los extremos del potenciómetro, a 5V y GND |
| LCD, RS (4) | Pin 12 | |
| LCD, RW (5) | GND | |
| LCD, E (6) | Pin 11 | |
| LCD, D4 (11) | Pin 5 | |
| LCD, D5 (12) | Pin 4 | |
| LCD, D6 (13) | Pin 3 | |
| LCD, D7 (14) | Pin 2 | |
| LCD, A (15) | 5V | A través de una resistencia de 220 Ω si tu módulo no la trae |
| LCD, K (16) | GND |
Código
// Saludo en la primera fila y segundos encendida en la segunda.
#include <LiquidCrystal.h>
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); // 16 columnas, 2 filas
lcd.print("Hola, mundo!");
}
void loop() {
lcd.setCursor(0, 1); // columna 0 de la segunda fila
lcd.print(millis() / 1000);
lcd.print(" s");
delay(200);
}Qué hace el código
- El constructor de LiquidCrystal recibe los pines en el orden RS, E, D4, D5, D6, D7.
- begin(16, 2) le dice el tamaño de la pantalla; sin él, setCursor() no sabe dónde empieza la segunda fila.
- setCursor(columna, fila) cuenta desde 0: (0, 1) es el principio de la segunda línea.
- La pantalla no tiene tildes, eñes ni signos de apertura: su juego de caracteres es el del controlador. Escribe sin ellos o crea caracteres propios con createChar().
Paso a paso
- Coloca la pantalla y el potenciómetro en la protoboard y lleva 5V y GND a los raíles.
- Cablea la alimentación, la retroiluminación y el contraste, y comprueba que al girar el potenciómetro aparecen bloques en la primera fila.
- Conecta RS, E y D4–D7, y sube el código.
- Ajusta el potenciómetro hasta que el texto se lea bien.
Resultado
La primera fila dice «Hola, mundo!» y la segunda cuenta los segundos desde que arrancó la placa.
Si no funciona
- Si solo ves bloques en la primera fila, la pantalla tiene corriente pero no recibe datos: revisa RS, E y D4–D7.
- Si no ves nada, gira el potenciómetro de un extremo al otro: el contraste es la causa más frecuente.
- Si la retroiluminación no se enciende, revisa A y K; en algunos módulos aparecen como LED+ y LED−.
- Si salen caracteres extraños, D4–D7 están cruzados.