//BIBLIOTECAS
#include <DHT.h> //Biblioteca do sensor de temperatura e umidade
#include <DHT_U.h> //Bibliote auxiliar
#include <Wire.h> //Biblioteca I2C
#include <LiquidCrystal_I2C.h> //Biblioteca display de cristal liquido
#include <RTClib.h> //Biblioteca relogio
//Variáveis
float temperatura = 0;
float umidade = 0;
float tMax = 0;
float tMin = 100;
//Definições do display lcd e do sensor DHT22
#define col 20 //Define o número de colunas do display utilizado
#define lin 4 //Define o número de linhas do display utilizado
#define ende 0x27 //Define o endereço do display
#define dhtPin 4 //Pino de dados do DHT22
#define dhtType DHT22 //DHT 22 (AM2302)
RTC_DS1307 rtc;
DHT dht(dhtPin, dhtType);
LiquidCrystal_I2C lcd(ende, col, lin); //Cria o objeto lcd passando como parâmetros o endereço, o número de colunas e o número de linhas
void setup() {
lcd.init(); //Inicializa a comunicação com o display já conectado
lcd.clear(); //Limpa a tela do display
lcd.backlight(); //Aciona a luz de fundo do display
dht.begin(); //Inicializa o sensor DHT
rtc.begin(); //Inicializa o módulo RTC
delay(2000);// ATENÇAO - Para que o DHT funcione bem, ele precisa de aproximadamente 2 segundos antes de iniciarmos a leitura
}
void loop() {
temperatura = dht.readTemperature(); //Faz a leitura da temperatura
umidade = dht.readHumidity(); //Faz a leitura da umidade
DateTime now = rtc.now(); //Inicia a leitura da data e hora
lcd.setCursor(0, 0);
if (temperatura > tMax) {
tMax = temperatura;
lcd.print("Max=");
lcd.print(tMax);
lcd.print("C"); //Adicionado unidade de medida C (Centígrado)
}
lcd.setCursor(11, 0);
if (temperatura < tMin) {
tMin = temperatura;
lcd.print("Min=");
lcd.print(tMin);
lcd.print("C"); //Adicionado unidade de medida C (Centígrado)
}
lcd.setCursor(0, 1); //Posiciona o cursor no display (Coluna, Linha)
if (now.day() < 10)
lcd.print("0");
lcd.print(now.day()); // Imprime o dia
lcd.setCursor(2, 1);
lcd.print("/");
lcd.setCursor(3, 1);
if (now.month() < 10)
lcd.print("0");
lcd.print(now.month());
lcd.setCursor(5, 1);
lcd.print("/");
lcd.setCursor(6, 1);
lcd.print(now.year());
lcd.setCursor(12, 1); //Posiciona o cursor na segunda linha
if (now.hour() < 10)
lcd.print("0");
lcd.print(rtc.now().hour()); //Imprime a Hora
lcd.print(":"); //Imprime o texto entre aspas
if (now.minute() < 10)
lcd.print("0");
lcd.print(rtc.now().minute());
lcd.print(":"); //Imprime o texto entre aspas
if (now.second() < 10)
lcd.print("0");
lcd.print(rtc.now().second());
lcd.setCursor(0, 2);
lcd.print("Temperatura: ");
lcd.setCursor(14, 2);
lcd.print(temperatura);
if (temperatura < 10.0)
{
lcd.setCursor(18, 2);
lcd.print("C");
lcd.setCursor(19, 2);
lcd.print(" ");
}
else
{
lcd.setCursor(19, 2);
lcd.print("C");
}
lcd.setCursor(0, 3);
lcd.print("Umidade :");
lcd.setCursor(14, 3);
lcd.print(umidade, 2);
if (umidade < 10.0)
{
lcd.setCursor(18, 3);
lcd.print("%");
lcd.setCursor(19, 3);
lcd.print(" ");
}
else
{
lcd.setCursor(19, 3);
lcd.print("%");
}
delay(1000);
}