#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 7
#define DHTTYPE DHT22
const int BUTTON_PIN = 2;
const int RELAY_PIN = 3;
const int LED_BLUE_PIN = 4;
const int LED_GREEN_PIN = 5;
const int LED_RED_PIN = 6;
DHT dht(DHTPIN, DHTTYPE);
bool ventiladorLigado = false;
bool controleManual = false;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(BUTTON_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_BLUE_PIN, OUTPUT);
pinMode(LED_GREEN_PIN, OUTPUT);
pinMode(LED_RED_PIN, OUTPUT);
lcd.begin(16, 2);
dht.begin();
Serial.begin(9600);
lcd.clear();
lcd.print("Inicializando...");
delay(2000);
}
void loop() {
float umidade = dht.readHumidity();
float temperatura = dht.readTemperature();
if (isnan(umidade) || isnan(temperatura)) {
lcd.clear();
lcd.print("Erro no Sensor");
Serial.println("Erro ao ler do sensor");
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Umidade: ");
lcd.print(umidade);
lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print("C");
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.print(" % Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
if (controleManual) {
if (digitalRead(BUTTON_PIN) == LOW) {
ventiladorLigado = !ventiladorLigado;
delay(500);
}
} else {
if (umidade > 80) {
ventiladorLigado = true;
} else if (umidade < 50) {
ventiladorLigado = false;
}
}
digitalWrite(RELAY_PIN, ventiladorLigado ? HIGH : LOW);
if (umidade > 80) {
digitalWrite(LED_BLUE_PIN, HIGH);
digitalWrite(LED_GREEN_PIN, LOW);
digitalWrite(LED_RED_PIN, LOW);
} else if (umidade < 50) {
digitalWrite(LED_RED_PIN, HIGH);
digitalWrite(LED_GREEN_PIN, LOW);
digitalWrite(LED_BLUE_PIN, LOW);
} else {
digitalWrite(LED_GREEN_PIN, HIGH);
digitalWrite(LED_RED_PIN, LOW);
digitalWrite(LED_BLUE_PIN, LOW);
}
delay(1000);
}