#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 25
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
int buzzer = 14;
int led = 2;
int trig = 5;
int echo = 4;
long duracao;
float distancia;
void setup() {
dht.begin();
lcd.init();
lcd.backlight();
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
float temp = dht.readTemperature();
float umid = dht.readHumidity();
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duracao = pulseIn(echo, HIGH);
distancia = duracao * 0.034 / 2;
if (isnan(temp) || isnan(umid)) {
lcd.setCursor(0,0);
lcd.print("Erro no sensor ");
noTone(buzzer);
return;
}
if (temp > 35 && umid < 30 && distancia < 10) {
lcd.setCursor(0,0);
lcd.print("!!! PERIGO !!! ");
digitalWrite(led, HIGH);
tone(buzzer, 1000);
}
else if (temp > 30 || umid < 40) {
lcd.setCursor(0,0);
lcd.print("Temp:");
lcd.print(temp);
lcd.setCursor(0,1);
lcd.print("Umid:");
lcd.print(umid);
tone(buzzer, 1000);
delay(200);
noTone(buzzer);
delay(200);
}
else if (distancia < 10) {
lcd.setCursor(0,0);
lcd.print("Objeto perto ");
digitalWrite(led, HIGH);
noTone(buzzer);
}
else {
lcd.setCursor(0,0);
lcd.print("Sistema OK ");
lcd.setCursor(0,1);
lcd.print(" ");
digitalWrite(led, LOW);
noTone(buzzer);
}
delay(300);
}