Mostrar datos en una pantalla LCD
Conecta una pantalla LCD 16×2 al Arduino Uno y muestra la temperatura y el estado de la alerta.
Qué vas a construir
Una pantalla LCD de 16 caracteres por 2 líneas que muestra la temperatura en la primera línea y el estado de la alerta en la segunda. Ya no necesitas la computadora para ver los datos.
Lo que aprendes
- Cómo conectar una pantalla de caracteres con su librería.
- Cómo escribir en posiciones concretas con
lcd.setCursor(). - Por qué hay que borrar los caracteres viejos al actualizar la pantalla.
- Cómo ajustar el contraste con un potenciómetro.
Materiales en Tinkercad
- Arduino Uno R3
- LCD 16×2 (LCD Display)
- Potenciómetro de 10 kΩ, para el contraste
- Sensor TMP36
- LED y resistencia de 220 Ω
- Protoboard y cables
Paso 1: Conecta la pantalla
Usa estas conexiones:
| Pantalla LCD | Arduino |
|---|---|
| RS | pin 12 |
| E | pin 11 |
| D4 | pin 5 |
| D5 | pin 4 |
| D6 | pin 3 |
| D7 | pin 6 |
| VSS y RW | GND |
| VDD | 5V |
| A (backlight) | 5V, con resistencia de 220 Ω si la simulación lo pide |
| K (backlight) | GND |
| V0 | cursor del potenciómetro |
El potenciómetro de contraste va entre 5V y GND, con el cursor en V0.
Paso 2: Conecta el sensor y la alerta
- TMP36 en A0, como en Leer un sensor de temperatura.
- LED de alerta en pin 8, con resistencia de 220 Ω a GND.
Paso 3: Escribe el código
Tinkercad incluye la librería LiquidCrystal. Escribe:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 6); // RS, E, D4, D5, D6, D7
const int SENSOR = A0;
const int ALERTA = 8;
const float UMBRAL = 30.0;
float leerCelsius() {
int lectura = analogRead(SENSOR);
float voltaje = lectura * 5.0 / 1024.0;
return (voltaje - 0.5) * 100.0;
}
void setup() {
lcd.begin(16, 2);
pinMode(ALERTA, OUTPUT);
}
void loop() {
float celsius = leerCelsius();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(celsius, 1); // un decimal
lcd.print(" C "); // espacios para borrar restos del valor anterior
lcd.setCursor(0, 1);
if (celsius >= UMBRAL) {
lcd.print("ALERTA ");
digitalWrite(ALERTA, HIGH);
} else {
lcd.print("Normal ");
digitalWrite(ALERTA, LOW);
}
delay(500);
}
Los espacios al final de cada print() no son decoración. Si el valor anterior era más largo, sin ellos quedan caracteres viejos en la pantalla.
Paso 4: Ejecuta la simulación
Inicia la simulación. Gira el potenciómetro de contraste hasta que el texto se vea nítido.
Cómo sabes que lo lograste
- La primera línea muestra la temperatura con un decimal.
- La segunda línea dice “Normal” o “ALERTA”, según el umbral.
- El LED de alerta cambia junto con el texto.
Qué salió mal
La pantalla está encendida pero sin texto. Gira el potenciómetro de contraste. Es el error más común.
La pantalla muestra cuadros o símbolos raros. Revisa las conexiones D4 a D7. Un cable cruzado cambia los caracteres.
Aparecen restos de números viejos. Agrega más espacios al final del print() correspondiente.
El código no compila con LiquidCrystal. Confirma que la primera línea sea #include <LiquidCrystal.h> y que el nombre esté escrito exactamente así.
Siguiente clase
En la siguiente clase vas a juntar todo en una estación de alerta con dos sensores, una pantalla y un botón para cambiar el umbral.