Ir al contenido
← Volver a Formación Arduino Principiante

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.

Dificultad: Principiante · Tiempo: 50 min · Cerebro: Arduino Uno

🧰 Lista de materiales

Arduino Uno R3 (ATmega328P)
Arduino Uno R3 (ATmega328P)
Lee el sensor, escribe en el LCD
Módulo LCD 1602A 16×2
Módulo LCD 1602A 16×2
Muestra los datos (16×2 caracteres)
sin foto
Potenciómetro rotativo B5K (5 kΩ)
Ajuste de contraste del LCD
sin foto
Pods temp/humedad Wi-Fi
Fuente de temp/humedad (o sensor DHT)
Breadboard 830 puntos
Breadboard 830 puntos
Montaje

🎯 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.

NotaPara la lectura de temperatura/humedad lo ideal es un sensor DHT11/DHT22. Si no tienes uno a mano, el código incluye una versión que muestra valores simulados para que practiques el manejo del LCD; sustituye esa parte por la lectura real del sensor cuando lo conectes.

📚 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 LCDHasta
VSSGND
VDD5 V
V0Cursor del potenciómetro (contraste)
RSD12
RWGND
ED11
D4D5
D5D4
D6D3
D7D2
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

  1. Cablea alimentación (VSS/VDD) y retroiluminación (A/K) del LCD.
  2. Conecta el potenciómetro al pin V0 para el contraste.
  3. Cablea RS, E y D4–D7 según la tabla.
  4. Sube el sketch y gira el potenciómetro hasta ver los caracteres nítidos.
  5. Sustituye leerTemp()/leerHum() por tu sensor real.

🧩 Resolución de problemas

SíntomaCausaSolución
Pantalla en blancoContraste mal ajustadoGira el potenciómetro de V0
Fila de cuadros negrosLógica OK, contraste extremoAjusta V0 al punto medio
Caracteres rarosCableado D4–D7 cruzadoRevisa 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.
← Volver a Formación Arduino