#include "DHT.h" // Librería para manejar el sensor DHT
#include <Wire.h> // Librería para comunicación I2C, utilizada por la pantalla LCD.
#include <LiquidCrystal_I2C.h> // Librería para controlar pantallas LCD con interfaz I2C
#define I2C_ADDR 0x27 // Dirección I2C de la pantalla LCD
#define LCD_COLUMNS 16 // Número de columnas de la pantalla LCD.
#define LCD_LINES 2 // Número de filas de la pantalla LCD.
const int DHT_PIN = 26; // Pin donde se conecta el sensor DHT22
const int YL69_PIN = 34; // Pin donde se conecta el sensor YL69
float temp; // Variable para almacenar la lectura de la temperatura
float hum; // Variable para almacenar la lectura de la humedad relativa del aire
int hum_suelo = 0; // Variable para almacenar la lectura de humedad del suelo
DHT dht(DHT_PIN,DHT22); // Creación de un objeto para interactuar con el sensor DHT
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES); // Creación de un objeto para controlar la pantalla LCD
void setup() {
Serial.begin(115200); // Inicialización de la comunicación serial
dht.begin(); // Inicialización del sensor DHT22
lcd.init(); // Inicializa la pantalla LCD.
lcd.backlight(); // Enciende la luz de fondo del LCD.
lcd.print("Sistema activo"); // Muestra un mensaje inicial
delay(2000); // Espera 2 segundos antes de continuar
lcd.clear(); // Limpia la pantalla LCD
}
void loop() {
temp = dht.readTemperature(); //Lee la temperatura desde el sensor DHT.
hum = dht.readHumidity(); // Lee la humedad relativa del aire desde el sensor DHT
hum_suelo = analogRead(YL69_PIN); // Lee el valor analógico del sensor de humedad del suelo
int hum_suelo = map(analogRead(YL69_PIN), 0, 4095, 100, 0); // Convertir valor del sensor de humedad del suelo a porcentaje
// Mostrar las mediciones en el monitor serial
Serial.print("Temp: ");
Serial.print(temp, 1);
Serial.print("°C | Humedad: ");
Serial.print(hum, 1);Serial.print("% | H. Suelo: ");
Serial.print(hum_suelo);
Serial.println("%");
delay(2000);
// Mostrar valores medidos en la LCD
lcd.setCursor(0, 0);
lcd.print("T:" + String(temp, 1) + "\xDF" + "C H:" + String(hum, 1) + "% ");
lcd.setCursor(0, 1);
lcd.print("H. Suelo:" + String(hum_suelo) + "% ");
delay(2000); // Espera 2 segundos antes de volver a iniciar el código
}