//Programa : Temperatura e umidade com o DHT11 e LCD 16x2
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <DHT.h> //Carrega a biblioteca DHT
//Define a ligação ao pino de dados do sensor
#define DHTPIN 2
//Define o tipo de sensor DHT utilizado
#define DHTTYPE DHT22
//Cria objeto dht
DHT dht(DHTPIN, DHTTYPE);
//Define o endereço e tipo do LCD
LiquidCrystal_I2C lcd(0x27,16,2);
//Variável Array para criar simbolo do grau
byte grau[8] ={ B00001100,
B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};
void setup()
{
Serial.begin(9600); //Inicializa a serial
lcd.init(); // Inicializa LCD
lcd.backlight(); // Liga luz do LCD
//Cria o caractere customizado com o simbolo do grau
lcd.createChar(0, grau);
dht.begin();
}
void loop()
{
float h = dht.readHumidity(); //Le o valor da umidade
float t = dht.readTemperature(); //Le o valor da temperatura
float hic = dht.computeHeatIndex(t,h,false);//sensação térmica true=farenheit e false=graus celsius
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(t,1);
lcd.setCursor(12,0);
Serial.print("Temperatura: ");
Serial.print(t);
Serial.println(" °C");
//Mostra o simbolo do grau formado pelo array
lcd.write((byte)0);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Umid: ");
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(h,1);
lcd.setCursor(12,1);
lcd.print("%");
Serial.print("Umidade: ");
Serial.print(h);
Serial.println(" %");
//Intervalo recomendado para leitura do sensor
lcd.clear();
lcd.print("Sens. Termica:");
lcd.setCursor(5,1);
lcd.print(hic);
lcd.print(" ");
lcd.write((byte)0);
lcd.print("C");
Serial.print("Sensação Térmica: ");
Serial.print(hic);
Serial.println(" °C");
Serial.println(" ");
delay(2000);
}