05. Termómetro-higrómetro en LCD 1602
Muestra temperatura y humedad en una pantalla de caracteres. Aprende a manejar un LCD HD44780 y la librería LiquidCrystal.
🧰 Lista de materiales
🎯 Qué vas a aprender
Toca tu primera pantalla. El LCD 1602 con controlador HD44780 es el estándar de los displays de caracteres. Aprenderás a cablearlo en modo 4 bits, ajustar el contraste y usar la librería LiquidCrystal.
📚 Teoría: el bus del LCD HD44780
El LCD tiene 16 pines, pero no necesitas mover 8 líneas de datos: funciona en modo 4 bits, enviando cada byte en dos mitades. Así usas solo 6 pines de Arduino: RS, E y D4–D7.
El pin V0 controla el contraste mediante un potenciómetro. Si no lo ajustas, verás la pantalla en blanco o con cuadros negros aunque el código funcione.
🔌 Conexiones
| Pin LCD | Hasta |
|---|---|
| VSS | GND |
| VDD | 5 V |
| V0 | Cursor del potenciómetro (contraste) |
| RS | D12 |
| RW | GND |
| E | D11 |
| D4 | D5 |
| D5 | D4 |
| D6 | D3 |
| D7 | D2 |
| A (LED+) | 5 V vía 220 Ω |
| K (LED−) | GND |
💻 Código completo
// Termómetro-higrómetro en LCD 1602 (modo 4 bits)
#include
// LiquidCrystal(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("Estacion Clima");
delay(1500);
lcd.clear();
}
float leerTemp() {
// TODO: sustituir por lectura real del sensor (p. ej. dht.readTemperature())
return 22.5 + (random(-10, 10) / 10.0);
}
float leerHum() {
return 48.0 + (random(-20, 20) / 10.0);
}
void loop() {
float t = leerTemp();
float h = leerHum();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(t, 1);
lcd.print((char)223); // símbolo de grado
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(h, 0);
lcd.print("% ");
delay(2000);
} 🛠️ Montaje paso a paso
- Cablea alimentación (VSS/VDD) y retroiluminación (A/K) del LCD.
- Conecta el potenciómetro al pin V0 para el contraste.
- Cablea RS, E y D4–D7 según la tabla.
- Sube el sketch y gira el potenciómetro hasta ver los caracteres nítidos.
- Sustituye leerTemp()/leerHum() por tu sensor real.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| Pantalla en blanco | Contraste mal ajustado | Gira el potenciómetro de V0 |
| Fila de cuadros negros | Lógica OK, contraste extremo | Ajusta V0 al punto medio |
| Caracteres raros | Cableado D4–D7 cruzado | Revisa el orden de pines |
🚀 Para ir más lejos
- Crea caracteres personalizados con
lcd.createChar()(un icono de termómetro). - Migra a una pantalla OLED (proyecto 11) para gráficos.