Placa de desarrollo Arduino UNO - LCD
Un LCD (Liquid Crystal Display) es una pantalla de cristal líquido que se usa para mostrar texto, números y caracteres simples en proyectos electrónicos. En este ejemplo montamos un contador de 0 a 9999 controlado por dos pulsadores.
Conexiones
Además de los seis pines de datos, el módulo necesita alimentación y el ajuste de contraste. Sin el potenciómetro en V0 la pantalla enciende pero no se ve nada, que es el fallo más habitual al montarlo por primera vez.
| Pin del LCD | Conexión | Nota |
|---|---|---|
RS | Pin 4 | Selección de registro |
EN | Pin 5 | Habilitación |
D4–D7 | Pines 6, 7, 8, 9 | Bus de datos de 4 bits |
VSS | GND | — |
VDD | 5 V | — |
V0 | Potenciómetro 10 kΩ | Ajuste de contraste |
A | 5 V con resistencia 220 Ω | Retroiluminación |
K | GND | Retroiluminación |
Pulsadores: SWITCH1 en A2 (subir) y SWITCH2 en A3 (bajar), ambos a GND con INPUT_PULLUP. | ||
Código del programa
#include <LiquidCrystal.h>
// Definición de pines según el diagrama
const int RS = 4;
const int EN = 5;
const int D4 = 6;
const int D5 = 7;
const int D6 = 8;
const int D7 = 9;
const int SWITCH1 = A2; // Subir
const int SWITCH2 = A3; // Bajar
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
int contador = 0;
void setup() {
pinMode(SWITCH1, INPUT_PULLUP);
pinMode(SWITCH2, INPUT_PULLUP);
lcd.begin(16, 2); // LCD de 16 columnas y 2 filas
lcd.setCursor(0, 0);
lcd.print("Contador:");
lcd.setCursor(0, 1);
lcd.print(contador);
}
void loop() {
// Switch 1 -> subir
if (digitalRead(SWITCH1) == LOW) {
contador++;
if (contador > 9999) contador = 9999;
actualizarLCD();
delay(200);
}
// Switch 2 -> bajar
if (digitalRead(SWITCH2) == LOW) {
contador--;
if (contador < 0) contador = 0;
actualizarLCD();
delay(200);
}
}
void actualizarLCD() {
lcd.setCursor(0, 1);
lcd.print(" "); // Limpiar la fila (6 espacios)
lcd.setCursor(0, 1);
lcd.print(contador);
}
Cómo funciona
La primera fila del LCD muestra el texto Contador:, que permanece fijo. La segunda muestra el valor numérico, que sube con SWITCH1 y baja con SWITCH2.
La función actualizarLCD() primero limpia la segunda fila con espacios en blanco y luego escribe el nuevo valor. Esto evita que queden restos del número anterior, por ejemplo al pasar de 100 a 99.
La librería LiquidCrystal ya viene incluida en el Arduino IDE, así que no hace falta instalar nada extra.
Posibles mejoras
El delay(200) frena el rebote de los pulsadores, pero también bloquea el resto del programa durante ese tiempo. Si más adelante añades más funciones, conviene sustituirlo por una comprobación con millis() para no detener el bucle.