#include <DHT.h> // Librería para el manejo del sensor DHT (temperatura y humedad)
#include <LiquidCrystal_I2C.h> // Librería para el manejo de pantallas LCD con comunicación I2C
#define DHT22_PIN 13 // Definimos el pin donde está conectado el sensor DHT22 (pin 13)
// Creamos un objeto para controlar la pantalla LCD, con dirección I2C 0x27, 16 columnas y 2 filas
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Creamos un objeto para el sensor DHT22, especificando el pin y el tipo de sensor
DHT dht22(DHT22_PIN, DHT22);
void setup() {
// Inicializamos el sensor DHT22
dht22.begin();
// Inicializamos la pantalla LCD
lcd.init(); // Inicializa la pantalla con el número de columnas y filas definidos
// Activamos la luz de fondo de la pantalla LCD
lcd.backlight();
}
void loop() {
// Leemos la humedad desde el sensor DHT22
float humi = dht22.readHumidity();
// Leemos la temperatura en grados Celsius desde el sensor DHT22
float tempC = dht22.readTemperature();
// Limpiamos la pantalla LCD antes de mostrar los nuevos datos
lcd.clear();
// Verificamos si las lecturas de temperatura o humedad son válidas
if (isnan(tempC) || isnan(humi)) {
// Si hay un error en las lecturas, mostramos "Error" en la pantalla
lcd.setCursor(0, 0); // Colocamos el cursor en la posición (columna 0, fila 0)
lcd.print("Error"); // Mostramos el mensaje de error
} else {
// Si las lecturas son correctas, mostramos la temperatura y la humedad
lcd.setCursor(0, 0); // Colocamos el cursor en la posición (columna 0, fila 0)
lcd.print("Temp: "); // Mostramos "Temp: "
lcd.print(tempC); // Mostramos la temperatura leída
lcd.print(" C "); // Mostramos " C " (grados Celsius)
lcd.setCursor(0, 1); // Colocamos el cursor en la posición (columna 0, fila 1)
lcd.print("Humi: "); // Mostramos "Humi: "
lcd.print(humi); // Mostramos la humedad leída
lcd.print(" % "); // Mostramos "%" (porcentaje de humedad)
}
// Esperamos 2 segundos antes de actualizar los datos nuevamente
delay(2000);
}