#include "DHTesp.h"
#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
// Configurações de Hardware
const int DHT_PIN = 15;
const int LDR_PIN = 2;
const int LedPin = 12;
const int servoPin = 14;
const int umidadelimite = 50;
const int valvulaAberta = 90;
const int valvulaFechada = 180;
// Variáveis globais
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHTesp dhtSensor;
Servo servo;
void setup() {
Serial.begin(115200);
pinMode(LedPin, OUTPUT);
pinMode(LDR_PIN, INPUT);
servo.attach(servoPin, 500, 2400);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
lcd.init(); // initialize the lcd
lcd.backlight();
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
delay(2000);
// Logico para Ligar Luz da estufa
if(digitalRead(LDR_PIN) == LOW){
digitalWrite(LedPin, LOW); // Liga o LED
}else{
digitalWrite(LedPin, HIGH); // Desliga o LED
}
delay(1000);
// Logica para Abrir e Fechar a Valvula
if(data.humidity < umidadelimite) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Umidade baixa!");
lcd.setCursor(0, 1);
lcd.print("Valvula Aberta");
servo.write(valvulaAberta);
delay(100);
}else{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Umidade Certa!");
lcd.setCursor(0, 1);
lcd.print("Valvula Fechada!");
servo.write(valvulaFechada);
delay(100);
}
delay(1000);
}