// Medição da temperatura e humidade com sensor DHT22 e visualização com Display LCD 16X2.
// iNCLUSÃO DA BIBLIOTECA DO DISPLAY LCD
#include <LiquidCrystal.h>
//INCLUSÃO DA BIBLIOTECA DO SENSOR
#include "DHT.h"
#define DHTPIN 8 //PINO DIGITAL UTILIZADO PELO DHT22
// PINOS UTILIZADOS PELOS MÓDULOS DO LCD (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#define DHTTYPE DHT22 //DEFINE O MODELO DO SENSOR (DHT22 / AM2302)
DHT dht(DHTPIN, DHTTYPE); //PASSA OS PARÂMETROS PARA A FUNÇÃO
char temperature[] = "Temp = 00.0 C";
char humidity[] = "Hum = 00.0 %";
void setup() {
// configura o número de colunas e linhas do LCD
lcd.begin(16, 2);
dht.begin(); //INICIALIZA A FUNÇÃO
}
void loop() {
delay(2000); //INTERVALO DE 2 SEGUNDOS ANTES DE COMEÇAR AS LEITURAS
// Lê a Humidade
int Hum = dht.readHumidity() * 10;
//Lê a temperatura em celcius
int Temp = dht.readTemperature() * 10;
// Verifica se alguma leitura falhou e limpa o Display (para tentar novamente)
if (isnan(Hum) || isnan(Temp)) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Error");
return;
}
if(Temp < 0){
temperature[6] = '-';
Temp = abs(Temp);
}
else
temperature[6] = ' ';
temperature[7] = (Temp / 100) % 10 + 48;
temperature[8] = (Temp / 10) % 10 + 48;
temperature[10] = Temp % 10 + 48;
temperature[11] = 223;
if(Hum >= 1000)
humidity[6] = '1';
else
humidity[6] = ' ';
humidity[7] = (Hum / 100) % 10 + 48;
humidity[8] = (Hum / 10) % 10 + 48;
humidity[10] = Hum % 10 + 48;
lcd.setCursor(0, 0);
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print(humidity);
}