Termômetro digital com arduino SR 3 parte 1 – Day 3

Leonardo Campbell
Aprenda a fazer um medidor de temperatura e umidade com arduino para a robótica, muito fácil e com poucos componentes, Termômetro de arduino uno com display retro.

Compartilhe esse post

Esquema de montagem

Codigo fonte

Baixe e instale as bibliotecas:

DHT_sensor

 

TimerOne

 

TM74HC595-4dig-display

/*
  ------------------------------------------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();
}

Deixe seu comentário no final da pagina!

Compartilhe esse post

Receba avisos de novos posts e novidades

Conteúdo extra e contato mas próximo com você

Outros Posts que talvez você goste

Que Saber Mais Sobre Robótica?

Venha Fazer Um Curso Online E Aprender Muito Mais