#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTTYPE DHT22
#define DHTPIN 2
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
LiquidCrystal_I2C lcd(0x27, 16, 2); // Configura endereço I2C e display com 16 caracteres e 2 linhas
void setup()
{
dht.begin();
sensor_t sensor;
dht.temperature().getSensor(&sensor);
dht.humidity().getSensor(&sensor);
delayMS = sensor.min_delay / 1000;
lcd.init(); // inicializa LCD
lcd.clear(); //limpa a tela
lcd.backlight(); // ativa led de backlight
}
void loop()
{
delay(delayMS); // atraso entre as medições
sensors_event_t event; // inicializa o evento da Temperatura
dht.temperature().getEvent(&event); // faz a leitura da Temperatura
if (isnan(event.temperature)) // se algum erro na leitura
{
lcd.setCursor(0,0);
lcd.print("Erro na leitura");
lcd.setCursor(0,1);
lcd.print("Da Temperatura!");
delay(3000);
lcd.clear();
}
else if (event.temperature<10)
{
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(event.temperature);
lcd.print(" *C");
lcd.setCursor(0,1);
lcd.print("Temp. Baixa!");
delay(3000);
lcd.clear();
}
else if (event.temperature>16)
{
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(event.temperature);
lcd.print(" *C");
lcd.setCursor(0,1);
lcd.print("Temp. Alta!");
delay(3000);
lcd.clear();
}
else
{
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(event.temperature);
lcd.print(" *C");
lcd.setCursor(0,1);
lcd.print("Temp. BOA!");
delay(3000);
lcd.clear();
}
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity))
{
lcd.setCursor(0,0);
lcd.print("Erro na leitura");
lcd.setCursor(0,1);
lcd.print("Da Umidade!");
delay(3000);
lcd.clear();
}
else if (event.relative_humidity<60)
{
lcd.setCursor(0,0);
lcd.print("Umidade: ");
lcd.print(event.relative_humidity);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Umidade Baixa!");
delay(3000);
lcd.clear();
}
else if (event.relative_humidity>80)
{
lcd.setCursor(0,0);
lcd.print("Umidade: ");
lcd.print(event.relative_humidity);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Umidade Alta!");
delay(3000);
lcd.clear();
}
else
{
lcd.setCursor(0,0);
lcd.print("Umidade: ");
lcd.print(event.relative_humidity);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Umidade BOA!");
delay(3000);
lcd.clear();
}
}