Esquema de montagem
Codigo fonte
/*
------------------------------------------Termômetro digital SR 3 ------------------------------------------------
Versão do Software: 1.0 SR 3 //não apague essa linha, para futuras consultas
Software open source, favor citar o autor: Seu Robô https://SeuRobo.com.br/
Criado por: Leonardo Campbell - Seu Robô
*/
#include <TM74HC595Display.h> //Biblioteca do Display LED
#include <TimerOne.h> //Biblioteca de tempo do arduino
#include <DHT.h>; //Biblioteca de tempo do DHT 22
/*Atenção
* Para o sketch/programa funcionar tem que instalar as bibliotecas:
* Adafruit_Unified_Sensor
* DHT_sensor
* TimerOne
* TM74HC595-4dig-display
* Todas se encontram para baixar gratuitamente em: https:https://seurobo.com.br/sr3
*/
//Cofogurações de pinos do displaye Do leitor de temperatura
#define SCLK 4 //Ligar o SCLK do displayno pino 4
#define RCLK 3 //Ligar o RCLK do displayno pino 3
#define DIO 2 //Ligar o DIO do displayno pino 2
#define DHTPIN 5 //LIgar o pino digital do DHT22 (que é o do lado do VCC)
#define DHTTYPE DHT22 //define o modelo do sensor (dht22 / am2302)
TM74HC595Display visor(SCLK, RCLK, DIO); //Configurar as portas na função da biblioteca
unsigned char LED_0F[13]; //Separa 13 posições na memoria do arduino para guardar os caracteres
int Temperatura; //variavel para a leitura te temperatura
int Umidade; //variavel para a leitura te Umidade
int dig1Temp = 0; //variavel do primeiro numero da temperatura
int dig2Temp = 0;//variavel do segundo numero da temperatura
int dig1Humi = 0;//variavel do primeiro numero da humidade
int dig2Humi = 0; //variavel do segundo numero da humidade
DHT dht(DHTPIN, DHTTYPE); //passa os parâmetros para a função
void setup() { //Função de configuração
Serial.begin(9600); //inicializa a serial monitor
dht.begin(); //inicializa a função do sensor
//Cada varivael guardar um caracter especifico na memoria do arduino
LED_0F[0] = 0xC0; //0
LED_0F[1] = 0xF9; //1
LED_0F[2] = 0xA4; //2
LED_0F[3] = 0xB0; //3
LED_0F[4] = 0x99; //4
LED_0F[5] = 0x92; //5
LED_0F[6] = 0x82; //6
LED_0F[7] = 0xF8; //7
LED_0F[8] = 0x80; //8
LED_0F[9] = 0x90; //9
LED_0F[10] = 0xC6; //C
LED_0F[11] = 0xC1; //U
LED_0F[12] = 0xBF; //-
Timer1.initialize(1500); // definir um temporizador de comprimento de 1500 (função da biblioca LCD)
Timer1.attachInterrupt(timerIsr); // Anexe a rotina de serviço aqui (função da biblioca LCD)
}
void loop() { //Função principal do arduino
Temperatura = dht.readTemperature(); //leitura da temperatura
dig1Temp = Temperatura / 10; //Pega o primeiro digito e guarda na variavel
dig2Temp = Temperatura - (dig1Temp * 10); //Pega o segundo digito e guarda na variavel
Umidade = dht.readHumidity(); //leitura da humidade
dig1Humi = Umidade / 10; //Pega o primeiro digito e guarda na variavel
dig2Humi = Umidade - (dig1Humi * 10); //Pega o segundo digito e guarda na variavel
//Não pode der uma nova leitura do sensor em menos de 2 segundos
Serial.print("Umidade: "); //imprime o texto na serial
Serial.print(Temperatura); //imprime na serial o valor de umidade medido
Serial.print("%");
Serial.print(" / Temperatura: "); //imprime o texto na serial na mesma linha ainda
Serial.print(Umidade, 0); //imprime na serial o valor de umidade medido e remove a parte decimal
Serial.println("*C");
//Exibir no DISPLAY a Umidade
visor.set(LED_0F[dig1Humi], 3); //Coloca o primeiro digito no display
visor.set(LED_0F[dig2Humi], 2); //Coloca o segundo digito no display
visor.set(LED_0F[12], 1); //Coloca o terceiro digito no display
visor.set(LED_0F[11], 0); //Coloca o quarto digito no display
delay(5000); //Aguarda 5 segundos
visor.clear(); //Apaga tudo do display
//Faz uma separação por traços durante um segundo
visor.set(LED_0F[12], 3); //Coloca o primeiro digito no display
visor.set(LED_0F[12], 2); //Coloca o segundo digito no display
visor.set(LED_0F[12], 1); //Coloca o terceiro digito no display
visor.set(LED_0F[12], 0); //Coloca o quarto digito no display
delay(1000); //Aguarda 1 segundos
visor.clear(); //Apaga tudo do display
//Exibir no DISPLAY a temperatura
visor.set(LED_0F[dig1Temp], 3); //Coloca o primeiro digito no display
visor.set(LED_0F[dig2Temp], 2); //Coloca o segundo digito no display
visor.set(LED_0F[12], 1); //Coloca o terceiro digito no display
visor.set(LED_0F[10], 0); //Coloca o quarto digito no display
delay(5000); //Aguarda 5 segundos
visor.clear(); //Apaga tudo do display
}
//Função da biblioteca do Display
void timerIsr()
{
visor.timerIsr();
}