#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;
int pinoLDR = 25;
int led1 = 19;
int led2 = 5;
bool sistemaNormal = true;
//DHT SensorDHT(pinoDHT, DHT11);
DHT SensorDHT(pinoDHT, DHT22);
Servo meuServo;
void setup() {
pinMode(verde, OUTPUT);
pinMode(vermelho, OUTPUT);
pinMode(pino_trig, OUTPUT);
pinMode(pino_echo, INPUT);
pinMode(pinoLDR, 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");
}
}
void verificarLuminosidade() {
int valorLDR = analogRead(pinoLDR);
int luminosidade = map(valorLDR, 0, 4095, 1600, 0);
Serial.print("Potenciômetro:");
Serial.print(valorLDR);
Serial.print("Luminosidade: ");
Serial.println(luminosidade);
if (luminosidade < 1500) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
}
}