Bu yazıyı Türkçe okuyun · Read in English
¿Qué hace este proyecto?
Construimos una pequeña estación meteorológica que mide la temperatura y la humedad de la habitación y las muestra en una pantalla LCD de 16×2. El sensor DHT11 toma una lectura cada dos segundos; los valores aparecen en la pantalla y en el Monitor Serie del ordenador.
- Edad: a partir de 11 años
- Nivel: Intermedio
- Tiempo: unos 45 minutos
- Qué aprenderás: instalar bibliotecas, leer un sensor digital, escribir texto en una pantalla LCD I2C
Lista de materiales
| Material | Cant. |
|---|---|
| Arduino Uno (o compatible) | 1 |
| Sensor de temperatura y humedad DHT11 (módulo de 3 pines) | 1 |
| Pantalla LCD de 16×2 (con módulo I2C) | 1 |
| Protoboard | 1 |
| Cables puente macho-macho y macho-hembra | ~10 |
| Cable USB | 1 |
Conexiones

| Componente | Pin del componente | Pin de Arduino |
|---|---|---|
| DHT11 | VCC (+) | 5V |
| DHT11 | DATA (OUT) | D2 |
| DHT11 | GND (–) | GND |
| LCD I2C | VCC | 5V |
| LCD I2C | GND | GND |
| LCD I2C | SDA | A4 |
| LCD I2C | SCL | A5 |
Bibliotecas necesarias
En el Arduino IDE, abre Herramientas → Administrar bibliotecas, busca e instala estas dos bibliotecas:
- DHT sensor library (Adafruit): cuando te lo pregunte, instala también la biblioteca “Adafruit Unified Sensor”.
- LiquidCrystal I2C (Frank de Brabander)
Código
// Medidor de temperatura y humedad con Arduino - ozandamci.com
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // si la pantalla no funciona, prueba con 0x3F
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
delay(2000);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
lcd.clear();
if (isnan(humidity) || isnan(temperature)) {
lcd.setCursor(0, 0);
lcd.print("Error de sensor");
Serial.println("No se pudo leer el DHT11");
} else {
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature, 1);
lcd.print((char)223); // símbolo de grado
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(humidity, 0);
lcd.print("%");
Serial.print("Temperatura: ");
Serial.print(temperature);
Serial.print(" C Humedad: ");
Serial.print(humidity);
Serial.println(" %");
}
delay(2000); // el DHT11 solo admite una lectura cada 2 segundos como máximo
}
Paso a paso
- Instala las bibliotecas. Añade al Arduino IDE las dos bibliotecas indicadas arriba.
- Conecta el DHT11. Conecta el pin + del módulo a 5V, el pin – a GND y el pin OUT/DATA a D2.
- Conecta la pantalla LCD. En el módulo I2C de la parte trasera de la pantalla, conecta VCC a 5V, GND a GND, SDA a A4 y SCL a A5. Puedes compartir 5V y GND con las líneas de alimentación de la protoboard.
- Sube el código. Elige tu placa y tu puerto y haz clic en Subir.
- Ajusta el contraste. Si la pantalla se ilumina pero no se ve ningún texto, gira el potenciómetro azul del módulo I2C con un destornillador pequeño.
- Pruébalo. Echa el aliento suavemente sobre el sensor; deberías ver cómo sube el valor de la humedad.
Solución de problemas
- La pantalla solo muestra bloques o no muestra nada: Cambia
0x27por0x3Fen el código y vuelve a intentarlo. Si sigue sin funcionar, revisa los cables SDA y SCL. - Aparece “Error de sensor”: Comprueba que el pin DATA del DHT11 está conectado a D2. Si usas un sensor suelto de 4 pines, necesitas una resistencia de 10 kΩ entre DATA y 5V.
- Algunos caracteres se ven raros: Las pantallas LCD de caracteres solo admiten letras latinas básicas, así que evita las tildes, la ñ y otros caracteres especiales en tus textos.
Pruébalo tú mismo
- Añade un LED rojo y un pitido de aviso que se activen cuando la temperatura supere los 28 °C.
- Muestra también en la pantalla la temperatura más alta y la más baja.

Birisi “Medidor de temperatura y humedad con Arduino, DHT11 y pantalla LCD (materiales y código)” üzerinde düşündü