#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <BH1750.h> //libreria del sensor de lumenes
#define I2C_ADDR    0x27
#define LCD_COLUMNS 16
#define LCD_LINES   2
const int DHT_PIN = 13;
// Definir el pin del sensor de humedad del suelo
#define SOIL_SENSOR_PIN 34  // Entrada analógica en ESP32
// creamos las instancias de los sensores
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
BH1750 lightMeter;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
  // Init
  lcd.init();
  lcd.backlight();
  // inicializamos el sensor de luz
  lightMeter.begin();
  // NUEVO: Configurar resolución del ADC
  analogReadResolution(12);  // ESP32 usa 12 bits (0-4095)
}
void loop() {
  // put your main code here, to run repeatedly:
  TempAndHumidity  data = dhtSensor.getTempAndHumidity();
  float lux = lightMeter.readLightLevel();
  // Leer el sensor de humedad del suelo
  int soilRaw = analogRead(SOIL_SENSOR_PIN);
  float soilMoisture = map(soilRaw, 0, 4095, 100, 0);  // 0V = 100% humedad, 3.3V = 0%
  Serial.println("Temp:" + String(data.temperature, 2) + "°C");
  Serial.println("Humidity:" + String(data.humidity, 1) + "%");
  Serial.println("Lum:" + String(lux) + " lx");
  // Mostrar humedad del suelo en el monitor serie**
  Serial.println("Soil Moisture:" + String(soilMoisture, 1) + "%"); 
  Serial.println("---");
  lcd.setCursor(0, 0);
  lcd.print("Temp:" + String(data.temperature,2) + String(char(223)) + "C");
  lcd.setCursor(0, 1);
  lcd.print("Hum:" + String(data.humidity,1) + "%");
  delay(2000); // Alterna cada 2 segundos
  lcd.clear();  // Limpia pantalla
  lcd.setCursor(0, 0);
  lcd.print("Lum:" + String(lux,1) + " lx");
  lcd.setCursor(0, 1);
  lcd.print("Soil:" + String(soilMoisture, 1) + "%");
  delay(2000);  // Alterna cada 2 segundos
  lcd.clear();  // Limpia pantalla
  
}
Temperatura ambiente
Humedad relativa
Humedad suelo
Luminosidad