#include <DHT.h>
#include <DHT_U.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int Sensor = 2;
float Temp;
float Humed;
DHT dht (Sensor, DHT22);
// Dirección I2C del LCD
int lcdAddress = 0x27; // Puedes cambiar esta dirección según el módulo I2C que tengas
// Número de columnas y filas del LCD (20x4)
int lcdColumns = 20;
int lcdRows = 4;
// Crear instancia del objeto LiquidCrystal_I2C
LiquidCrystal_I2C lcd(lcdAddress, lcdColumns, lcdRows);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin();
lcd.begin(20, 16);
//LCD.init();
// Inicializar el LCD
lcd.init();
// Encender el backlight (opcional)
lcd.backlight();
lcd.clear();
// Mostrar mensaje de inicio
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
// Simulación de barra de carga
for (int i = 0; i <= 100; i++) {
delay(50); // Simula el tiempo de carga
lcd.setCursor(0, 1);
lcd.print("["); // Inicio de la barra
int barWidth = map(i, 0, 100, 0, lcdColumns - 2); // Mapea el progreso a la longitud de la barra
for (int j = 0; j < barWidth; j++) {
lcd.print("="); // Carácter de la barra de carga
}
for (int j = barWidth; j < lcdColumns - 2; j++) {
lcd.print(" "); // Espacios en blanco para completar la barra
}
lcd.print("]"); // Fin de la barra
lcd.print(" "); // Espacio después de la barra
lcd.print(i); // Porcentaje de carga
lcd.print("%");
}
// Limpia la pantalla después de completar la barra de carga
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Listo!");
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
Temp = dht.readTemperature();
Humed = dht.readHumidity();
Serial.print("Temperatura: ");
Serial.print(Temp);
Serial.print("Humedad: ");
Serial.println(Humed);
// Mostrar lecturas en el LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperatura: ");
lcd.print(Temp);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(Humed);
lcd.print(" %");
delay(2000);
}