
Video
Diagrama del circuito

Código fuente
1#include <LiquidCrystal_I2C.h>
2#include <Wire.h>
3#include <DHT.h>
4
5#define DHTPIN 3
6#define DHTTYPE DHT11
7
8LiquidCrystal_I2C lcd(0x27, 16, 2);
9DHT dht(DHTPIN, DHTTYPE);
10
11void setup() {
12 dht.begin();
13 lcd.init(); // Modern libraries prefer init() over begin()
14 lcd.backlight();
15}
16
17void loop() {
18 int humidity = dht.readHumidity();
19 float temperature = dht.readTemperature();
20
21 // Check if readings failed
22 if (isnan(humidity) || isnan(temperature)) {
23 lcd.setCursor(0, 0);
24 lcd.print("Sensor Error! ");
25 return;
26 }
27
28 lcd.setCursor(0, 0);
29 lcd.print("Temp: ");
30 lcd.print(temperature);
31 lcd.print((char)223); // Degree symbol (°)
32 lcd.print("C ");
33
34 lcd.setCursor(0, 1);
35 lcd.print("Humidity: %");
36 lcd.print(humidity);
37 lcd.print(" "); // Trailing spaces to clear old data
38
39 delay(2000); // DHT11 is slow, 2 seconds is more stable
40}Preguntas frecuentes
¿Qué precisión tienen las mediciones del DHT11?▾
El DHT11 mide la temperatura con una precisión de ±2 °C y la humedad con una precisión de ±5 %, y funciona en un rango de 0 a 50 °C. Para una medición más precisa, se recomienda utilizar el DHT22 (±0,5 °C) o el BME280.
En la pantalla aparece «nan» o un error, ¿por qué?▾
No se ha podido leer el sensor. Comprueba la resistencia pull-up de 10 kΩ en el pin de datos, el tipo de sensor configurado en la biblioteca (DHT11) y que se haya esperado al menos 1-2 segundos entre lecturas.
¿Por qué se actualizan tan lentamente las lecturas?▾
El DHT11 puede realizar como máximo una medición por segundo. Intentar realizar lecturas con mayor frecuencia puede dar lugar a valores erróneos u obsoletos; se recomienda esperar 2 segundos entre cada medición.
¿Puedo calcular la temperatura percibida?▾
Sí, la función computeHeatIndex() de la biblioteca DHT calcula la temperatura percibida a partir de la temperatura y la humedad.
