//Bibliotecas
#include "DHT.h" // Biblioteca utilizada para gerenciar o sensor de Temperatura e Umidade.
//#include <Wire.h> //Biblioteca utilizada para gerenciar a comunicação entre dispositicos através do protocolo I2C
#include <LiquidCrystal_I2C.h> //Biblioteca controlar display 20x4 através do I2C
#include <RTClib.h> // Biblioteca de controle do módulo de relógio
//Variáveis
float temperatura;
float umidade;
//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º de colunas e o nº 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
lcd.setCursor(0, 0); //Coloca o cursor do display na coluna 1 e linha 1
lcd.print("LAB - Monitor Local"); //Exibe a mensagem na primeira linha do display
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Esta linha deve ser executada apenas uma vez, pois acerta o relógio de acordo com a data da compilação
}
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, 1); //Posiciona o cursor no display (Coluna, Linha)
lcd.print(now.day()); // Imprime o dia
lcd.setCursor(2,1);
lcd.print("/");
lcd.setCursor(3,1);
lcd.print(now.month());
lcd.setCursor(5,1);
lcd.print("/");
lcd.setCursor(6,1);
lcd.print(now.year());
lcd.setCursor(11, 1); // Posiciona o cursor na primeira linha
lcd.print(rtc.now().hour()); // Imprime a Hora
lcd.print(":"); // Imprime o texto entre aspas
lcd.print(rtc.now().minute()); // Imprime o Minuto
lcd.print(":"); // Imprime o texto entre aspas
lcd.print(rtc.now().second());
lcd.setCursor(0, 2);
lcd.print("Temperatura: ");
lcd.setCursor(13, 2);
lcd.print(temperatura,2);
lcd.setCursor(19, 2);
lcd.print("C");
lcd.setCursor(0, 3);
lcd.print("Umidade: ");
lcd.setCursor(13, 3);
lcd.print(umidade, 1);
lcd.setCursor(18, 3);
lcd.print("%");
delay(1000);
//lcd.noDisplay();// Desliga Display:
//lcd.display();// Liga Display:
}