#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// Inicialização do display LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C da LCD e dimensões (16 colunas x 2 linhas)
// Inicialização do sensor DHT22
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Pinos para o LED de alarme e buzzer
const int ledPin = 12;
const int buzzerPin = 14;
// Setpoint de temperatura em °C
const float setpointT = 35; // sepoint da temperatura
const float setpointH = 75; //setpoint da humidade
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
dht.begin(); // Inicialização do sensor DHT22
pinMode(ledPin, OUTPUT); // Configura o pino do LED como saída
pinMode(buzzerPin, OUTPUT); // Configura o pino do buzzer como saída
}
void loop() {
// Leitura da umidade e temperatura do sensor DHT22
float humidity = dht.readHumidity();
float temperatureC = dht.readTemperature();
// Verifica se a leitura do sensor foi bem-sucedida
if (isnan(humidity) || isnan(temperatureC)) {
Serial.println("Falha ao ler o sensor DHT22!");
return;
}
// Exibição da umidade e temperatura no display LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatureC);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Umidade: ");
lcd.print(humidity);
lcd.print("%");
// Exibição dos dados no monitor serial
Serial.print("Temperatura: ");
Serial.print(temperatureC);
Serial.print(" °C\t");
Serial.print("Umidade: ");
Serial.print(humidity);
Serial.println(" %");
// Verifica se a temperatura/umidade ultrapassou o setpoint
if (temperatureC > setpointT) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
if (humidity > setpointH){
tone(buzzerPin, 1000);
delay(500);
noTone(buzzerPin);
}
delay(1000);
}