Você está na página 1de 2

#include <DHT.

h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define DHTPIN 2 // Pino de dados do sensor DHT22


#define DHTTYPE DHT22 // Tipo do sensor DHT22

DHT dht(DHTPIN, DHTTYPE); // Inicializa o sensor DHT22

LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C do display LCD1602

const int temperaturaPin = 3; // Pino do relé de controle de temperatura


const int umidadePin = 4; // Pino do relé de controle de umidade

int temperaturaDesejada = 37; // Temperatura desejada em graus Celsius


int umidadeDesejada = 60; // Umidade desejada em percentual

enum Modo {
ModoAutomatico,
ModoManual
};

Modo modoAtual = ModoAutomatico;

void setup() {
pinMode(temperaturaPin, OUTPUT);
pinMode(umidadePin, OUTPUT);

dht.begin();
lcd.begin(16, 2);
lcd.setBacklight(HIGH);

lcd.print("Modo: Automatico");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperaturaDesejada);
lcd.print("C");
delay(2000);
lcd.clear();
}

void loop() {
float temperatura = dht.readTemperature(); // Lê a temperatura do sensor DHT22
float umidade = dht.readHumidity(); // Lê a umidade do sensor DHT22

lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print("C");

lcd.setCursor(0, 1);
lcd.print("Umid: ");
lcd.print(umidade);
lcd.print("%");

if (modoAtual == ModoAutomatico) {
if (temperatura < temperaturaDesejada) {
digitalWrite(temperaturaPin, HIGH); // Ligar o relé de controle de
temperatura
} else {
digitalWrite(temperaturaPin, LOW); // Desligar o relé de controle de
temperatura
}

if (umidade < umidadeDesejada) {


digitalWrite(umidadePin, HIGH); // Ligar o relé de controle de umidade
} else {
digitalWrite(umidadePin, LOW); // Desligar o relé de controle de
umidade
}
}

// Leitura dos botões do LCD


int botao = lcd.readButtons();
if (botao != 0) {
if (botao == BUTTON_LEFT) {
modoAtual = ModoAutomatico;
lcd.clear();
lcd.print("Modo: Automatico");
delay(2000);
lcd.clear();
} else if (botao == BUTTON_RIGHT) {
modoAtual = ModoManual;
lcd.clear();
lcd.print("Modo: Manual");
delay(2000);
lcd.clear();
}
}

delay(2000); // Aguarda 2 segundos antes de atualizar novamente


}

Você também pode gostar