#include "DHT.h"
#include <Adafruit_Sensor.h>
#include <ESP32Servo.h>
int verde = 22;
int vermelho = 23;
int pinoDHT = 4;
int pinoMotor = 18;
int pino_trig = 12;
int pino_echo = 14;
bool sistemaNormal = true;
DHT SensorDHT(pinoDHT, DHT22);
Servo meuServo;
void setup() {
pinMode(verde, OUTPUT);
pinMode(vermelho, OUTPUT);
pinMode(pino_trig, OUTPUT);
pinMode(pino_echo, INPUT);
Serial.begin(9600);
SensorDHT.begin();
meuServo.attach(pinoMotor);
}
void loop() {
sistemaNormal = true;
verificarTemperatura();
verificarReservatorio();
estadoSistema();
delay(500);
}
void estadoSistema() {
if (sistemaNormal == true) {
digitalWrite(verde, HIGH);
digitalWrite(vermelho, LOW);
} if (sistemaNormal == false) {
digitalWrite(vermelho, HIGH);
digitalWrite(verde, LOW);
}
}
void verificarTemperatura(){
delay(2000);
float umidade = SensorDHT.readHumidity();
float temperatura = SensorDHT.readTemperature();
Serial.print("temp.:");
Serial.print(temperatura);
Serial.print("ºC, umidade:");
Serial.println(umidade);
if (temperatura > 32 || umidade < 30) {
sistemaNormal = false;
}
}
void verificarReservatorio() {
digitalWrite(pino_trig, LOW);
delayMicroseconds(2);
digitalWrite(pino_trig, HIGH);
delayMicroseconds(10);
digitalWrite(pino_trig, LOW);
long duracao = pulseIn(pino_echo, HIGH);
int distancia = duracao * 0.0343 / 2;
Serial.print("Distância: ");
Serial.print(distancia);
Serial.println("cm");
if (distancia < 10) {
meuServo.write(0);
}
else if (distancia > 10) {
meuServo.write(45);
sistemaNormal = false;
Serial.println("pode nao ter agua suficiente");
}
}