#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Configuración de la pantalla LCD y sensor DHT22
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_ROWS 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_ROWS);
#define DHTPIN 4      // Pin de datos del DHT22
#define DHTTYPE DHT22 // Especificamos el modelo del sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(115200);
  // Inicializamos la pantalla LCD con el número de columnas y filas
  lcd.init();
  lcd.begin(LCD_COLUMNS, LCD_ROWS);
  lcd.backlight(); // Encendemos la retroiluminación
  
  dht.begin();
  lcd.setCursor(0, 0);
  lcd.print("Iniciando...");
  delay(2000);
  lcd.clear();
}
void loop() {
  float humedad = dht.readHumidity();
  float temperatura = dht.readTemperature();
  if (isnan(humedad) || isnan(temperatura)) {
    Serial.println("Error al leer el DHT22");
    lcd.setCursor(0, 0);
    lcd.print("Error DHT22!");
  } else {
    Serial.print("Humedad: ");
    Serial.print(humedad);
    Serial.print(" %\t");
    Serial.print("Temperatura: ");
    Serial.print(temperatura);
    Serial.println(" *C");
    lcd.setCursor(0, 0);
    lcd.print("Temp: ");
    lcd.print(temperatura);
    lcd.print((char)223); // Símbolo de grado
    lcd.print("C");
    lcd.setCursor(0, 1);
    lcd.print("Hum: ");
    lcd.print(humedad);
    lcd.print(" %");
  }
  delay(2000);
}