#include <Wire.h> // Incluimos la librería para la comunicación I2C
#include <LiquidCrystal_I2C.h> // Incluye la biblioteca para controlar el LCD I2C
#include "DHT.h" // Incluye la biblioteca para el sensor DHT
#define DHTPIN 2 // Pin al que está conectado el sensor DHT
#define DHTTYPE DHT22 // Tipo de sensor DHT utilizado (DHT22 en este caso)
DHT dht(DHTPIN, DHTTYPE); // Crea un objeto DHT llamado 'dht'
LiquidCrystal_I2C lcd(0x27, 16, 2); // Crea un objeto LCD I2C con dirección 0x27, 20 columnas y 4 filas
const int led1=3;
const int led2=4;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
lcd.init(); // Inicializa el LCD
lcd.backlight(); // Enciende la retroiluminación del LCD
Serial.begin(115200); // Inicializa la comunicación serial a 115200 baudios
dht.begin(); // Inicializa el sensor DHT
}
void loop() {
float temperature = dht.readTemperature(); // Lee la temperatura del sensor DHT
float humidity = dht.readHumidity(); // Lee la humedad del sensor DHT
// Verifica si la lectura de temperatura o humedad es inválida
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!")); // Imprime un mensaje de error por serial
return; // Sale de la función loop()
}
if(temperature<35){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
}else if(temperature>=35){
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
lcd.setCursor(0, 0); // Establece el cursor en la columna 0, fila 0 del LCD
lcd.print("Tem: "); // Imprime "Tem: " en el LCD
lcd.print(temperature); // Imprime la temperatura en el LCD
lcd.setCursor(0, 1); // Establece el cursor en la columna 0, fila 1 del LCD
lcd.print("Hum: "); // Imprime "Hum: " en el LCD
lcd.print(humidity); // Imprime la humedad en el LCD
lcd.print("%"); // Imprime el símbolo de porcentaje en el LCD
// Espera unos segundos entre mediciones
delay(2000);
}