#include <DHT.h>
// Definição dos pinos
#define FAN_RELAY 7
#define PUMP_RELAY 8
#define LED_CRESCIMENTO 9
#define SOIL_MOISTURE_PIN A0
#define LDR_PIN A1
#define DHTPIN 2
#define DHTTYPE DHT22
// Instância do sensor DHT
DHT dht(DHTPIN, DHTTYPE);
// Limites para acionamento
const float TEMP_LIMITE_LIGAR = 30.0;
const float TEMP_LIMITE_DESLIGAR = 28.0;
const int UMIDADE_SOLO_LIMITE_LIGAR = 400;
const int UMIDADE_SOLO_LIMITE_DESLIGAR = 600;
const int LDR_LIMITE = 500;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(FAN_RELAY, OUTPUT);
pinMode(PUMP_RELAY, OUTPUT);
pinMode(LED_CRESCIMENTO, OUTPUT);
digitalWrite(FAN_RELAY, HIGH);
digitalWrite(PUMP_RELAY, HIGH);
digitalWrite(LED_CRESCIMENTO, LOW);
}
void loop() {
float temperatura = dht.readTemperature();
int umidadeSolo = analogRead(SOIL_MOISTURE_PIN);
int luminosidade = analogRead(LDR_PIN);
// Controle da ventoinha
if (temperatura >= TEMP_LIMITE_LIGAR) {
digitalWrite(FAN_RELAY, LOW);
} else if (temperatura <= TEMP_LIMITE_DESLIGAR) {
digitalWrite(FAN_RELAY, HIGH);
}
// Controle da irrigação
if (umidadeSolo <= UMIDADE_SOLO_LIMITE_LIGAR) {
digitalWrite(PUMP_RELAY, LOW);
} else if (umidadeSolo >= UMIDADE_SOLO_LIMITE_DESLIGAR) {
digitalWrite(PUMP_RELAY, HIGH);
}
// Controle do LED de crescimento
if (luminosidade <= LDR_LIMITE) {
digitalWrite(LED_CRESCIMENTO, HIGH);
} else {
digitalWrite(LED_CRESCIMENTO, LOW);
}
// Envio de dados via Serial
Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println(" C");
Serial.print("Umidade do Solo: "); Serial.println(umidadeSolo);
Serial.print("Luminosidade: "); Serial.println(luminosidade);
Serial.println("----------------------");
delay(2000); // Aguarda 2 segundos entre leituras
}