En este proyecto aprenderás a usar una pantalla LCD 16x2 con módulo I2C para mostrar la temperatura en grados Celsius y generar una alerta cuando el valor supere un límite definido. Además de visualizar la información en pantalla, Arduino encenderá un LED y activará un buzzer cuando la temperatura sea alta.
Este tipo de práctica es muy útil porque integra varios elementos aprendidos anteriormente: lectura de sensores, uso de condiciones, control de salidas y visualización de datos en una pantalla.
🎯 Objetivo
Medir la temperatura con un sensor NTC, mostrarla en una pantalla LCD 16x2 I2C y activar una alerta con LED y buzzer cuando la temperatura sea mayor o igual a 30 °C.
🖥️ ¿Qué es una pantalla LCD 16x2 I2C?
La pantalla LCD 16x2 permite mostrar 2 filas de 16 caracteres. Gracias al módulo I2C, su conexión se simplifica mucho, ya que solo utiliza cuatro pines:
- VCC
- GND
- SDA
- SCL
Esto la convierte en una excelente opción para mostrar valores, mensajes de estado y alertas sin depender del Monitor Serial.
🌡️ ¿Qué hará este proyecto?
El sistema realizará las siguientes acciones:
- leerá la temperatura desde un sensor NTC
- convertirá la lectura a grados Celsius
- mostrará la temperatura en la pantalla LCD
- indicará si la temperatura es normal o alta
- activará un LED y un buzzer si la temperatura llega a 30 °C o más
🛠️ Materiales
- 1 Arduino Uno
- 1 pantalla LCD 16x2 con módulo I2C
- 1 sensor de temperatura analógico NTC
- 1 LED
- 1 buzzer
- 1 resistencia de 220Ω
- Protoboard y cables
⚡ Conexión
Pantalla LCD 16x2 I2C
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
Sensor NTC
- VCC → 5V
- GND → GND
- S → A0
LED
- Ánodo → Pin 8
- Cátodo → Resistencia de 220Ω → GND
Buzzer
- Pin positivo → Pin 9
- Pin negativo → GND
En Wokwi, el sensor NTC puede funcionar mejor si se coloca fuera del protoboard y se conecta directamente con cables a 5V, GND y A0.
💻 Código Arduino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int sensorPin = A0;
const int ledPin = 8;
const int buzzerPin = 9;
const float BETA = 3950; // parámetro del NTC
void setup() {
lcd.init();
lcd.backlight();
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
delay(2000);
lcd.clear();
}
void loop() {
int valor = analogRead(sensorPin);
//se convierte valor a grados Celcius
float temperatura = 1 / (log(1 / (1023.0 / valor - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print((char)223);
lcd.print("C ");
if (temperatura >= 30) {
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("ALERTA TEMP ALTA");
} else {
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 1);
lcd.print("Temp normal ");
}
delay(1000);
}
📖 Explicación del código
- #include <Wire.h> permite la comunicación I2C
- #include <LiquidCrystal_I2C.h> carga la librería de la pantalla LCD
- LiquidCrystal_I2C lcd(0x27, 16, 2); crea el objeto de la pantalla
- analogRead(sensorPin) lee el valor analógico del sensor NTC
- luego se aplica una fórmula para convertir esa lectura a grados Celsius
- en la primera fila se muestra la temperatura actual
- en la segunda fila se muestra el estado del sistema
- si la temperatura es mayor o igual a 30 °C, se activa la alerta
Mientras la temperatura sea inferior a 30 °C, la pantalla mostrará el mensaje:
Temp normal
Pero si la temperatura alcanza o supera ese valor:
- se encenderá el LED
- sonará el buzzer
- la pantalla mostrará:
ALERTA TEMP ALTA
De esta manera, el sistema no solo mide la temperatura, sino que también informa y responde automáticamente.
🚀 Posibles mejoras
Este proyecto puede ampliarse de varias formas:
- cambiar el mensaje de alerta por uno más corto o más llamativo
- hacer que el buzzer suene de forma intermitente
- agregar un botón para apagar temporalmente la alarma
- convertirlo en una estación ambiental básica
⚠️ Errores comunes
❌ No conectar correctamente SDA y SCL
❌ Usar una dirección I2C incorrecta en la pantalla
❌ Esperar que el sensor entregue grados Celsius sin conversión
❌ No dejar espacios al final de los mensajes de la LCD
❌ Colocar el sensor NTC en una posición incorrecta dentro del protoboard en Wokwi
✅ Conclusión
Este proyecto permite integrar varios conceptos importantes de Arduino en una sola práctica: sensores, pantalla, salidas y condiciones. Mostrar la temperatura en grados Celsius en una LCD hace que el sistema sea mucho más claro y útil para el usuario.
Además, al activar un LED y un buzzer cuando la temperatura supera los 30 °C, se crea una alerta básica que acerca al estudiante a aplicaciones reales de monitoreo y automatización.
[warning title="Simulación en Wokwi" icon="check-circle"]
https://wokwi.com/projects/458960696514366465
[/warning]


Publicar un comentario