#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 2 // Pin al que está conectado el sensor DHT22
#define DHTTYPE DHT22 // Tipo de sensor DHT (DHT22 o DHT11)
#define MAX_BUTTON_PIN 3 // Pin al que está conectado el botón para resetear los valores máximos y mínimos
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4); // Dirección I2C de la pantalla LCD 20x4
float humedad, temperatura;
float humedadMaxima = -1000; // Inicializar con un valor muy bajo
float humedadMinima = 1000; // Inicializar con un valor muy alto
float temperaturaMaxima = -1000; // Inicializar con un valor muy bajo
float temperaturaMinima = 1000; // Inicializar con un valor muy alto
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
dht.begin();
pinMode(MAX_BUTTON_PIN, INPUT_PULLUP); // Configurar el pin del botón como entrada con pull-up interno
}
void loop() {
// Leer humedad y temperatura
humedad = dht.readHumidity();
temperatura = dht.readTemperature();
// Verificar si la lectura de humedad y temperatura fue exitosa
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error al leer del sensor DHT");
return;
}
// Actualizar valores máximos y mínimos
humedadMaxima = max(humedadMaxima, humedad);
humedadMinima = min(humedadMinima, humedad);
temperaturaMaxima = max(temperaturaMaxima, temperatura);
temperaturaMinima = min(temperaturaMinima, temperatura);
// Mostrar en la pantalla LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperatura: ");
lcd.print(temperatura);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(humedad);
lcd.print(" %");
lcd.setCursor(0, 2);
lcd.print("Max: ");
lcd.print("T:");
lcd.print(temperaturaMaxima);
lcd.print(" H:");
lcd.print(humedadMaxima);
lcd.setCursor(0, 3);
lcd.print("Min: ");
lcd.print("T:");
lcd.print(temperaturaMinima);
lcd.print(" H:");
lcd.print(humedadMinima);
// Verificar si se presionó el botón de reset
if (digitalRead(MAX_BUTTON_PIN) == LOW) {
resetearValores();
delay(1000); // Debounce
}
delay(2000); // Esperar un poco antes de la próxima lectura
}
void resetearValores() {
humedadMaxima = -1000;
humedadMinima = 1000;
temperaturaMaxima = -1000;
temperaturaMinima = 1000;
}