Módulo TM1637 – Display 4 dígitos com Arduino

Muitas vezes, nós desenvolvemos alguns projetos de automação, os quais, para desempenharem as suas respectivas funções, necessitam da existência de uma interação entre os mesmos e o usuário. Quando falamos especificamente em sistemas de monitoramento a interação citada pode ser obtida através da utilização de dispositivos como leds, displays LCD e displays de 7 segmentos. Neste tutorial, nós vamos te mostrar como manipular um display de 7 segmentos com 4 dígitos utilizando o módulo TM1637 com display de 4 dígitos em conjunto com uma placa Arduino.

Projeto com ESP usando o módulo TM1637 4 digitos
Projeto com ESP usando o módulo TM1637 4 digitos

[toc]

kit robotica educacional com Arduino ESP ou Microbit

A importância das Interfaces Homem-Máquina

Como dissemos anteriormente, em alguns tipos de aplicações é essencial que exista uma possibilidade de interação entre o sistema propriamente dito e o usuário. Dessa forma, nós precisamos de um caminho que torne essa interação possível. O nome desse caminho de comunicação chama-se IHM (Interface Homem Máquina).

IHM é um caminho pelo qual o homem e um projeto de automação podem se comunicar e interagir, visando atingir um objetivo comum.

Geralmente uma IHM é dada por algum tipo de saída como indicadores de velocidades, monitores, displays, auto-falantes, entre outros e algum tipo de entrada, como por exemplo, botões, telas do tipo touchscreen, microfones, câmeras, além de uma infinidade de outros elementos.

 

Exemplo de IHM
Exemplo de IHM

 

Neste momento que os displays de 7 segmentos tomam a atenção para si, pois, uma vasta gama de dispositivos automatizados faz o uso destes elementos pelos motivos que veremos em seguida. Confira aqui os nossos outros tutoriais sobre elementos integrantes de IHMs:

Os displays de 7 segmentos

Display 7 segmentos de 4 dígitos mostrando hora.
Display 7 segmentos de 4 dígitos mostrando hora.

Como dissemos anteriormente, os displays de 7 segmentos são muito utilizados para comunicação visual em projetos de automação, estando presentes em diversos equipamentos, tais como: relógios, calculadoras e multímetros. Por serem simples de usar, robustos e seguirem um padrão em sua estrutura, estes que permitem imprimir os algarismo arábicos (0 a 9) e até mesmo algumas letras (no caso de displays alfanuméricos).

 

Display de 7 segmentos

 

Como o próprio nome aponta, esse displays possuem 7 segmentos, de modo que, cada um destes corresponde a um led, os quais, são ligados em conjunto, podem formar um algarismo ou uma letra. Os segmentos deste display são identificados por letras que vão de a a g. Além disso, estes também possuem um ponto decimal, normalmente identificado pelas letras dp, veja a disposição dos segmentos conforme a figura abaixo:

 

Detalhe dos segmentos do display
Detalhe dos segmentos do display

Como podemos perceber, a representação de algarismos utilizando um único display é restrita à apresentação dos números contidos no intervalo de 0 a 9, de modo que, para fazermos com que o mesmo mostre algum sinalize algum numeral basta que os segmentos corretos sejam acionados ao mesmo tempo. Por exemplo, caso nosso desejo seja representar o número 0 (zero) nós devemos acender os segmentos a,b,c,d,e,f.

O módulo TM1637

O módulo TM1637 possui um display de 7 segmentos de 4 dígitos (que podem ser tratados como 4 displays de 7 segmentos em conjunto). Ao contrário de uma associação de displays “tradicional” que faria o uso de muitos pinos (no mínimo 7 pinos mais um para ligar e desligar cada display) de uma placa Arduino UNO, este módulo permite que os 4 displays sejam manipulados somente com 2 pinos.

Módulo TM1637 com display 4 dígitos 
Módulo TM1637 com display 4 dígitos

Ao todo, o módulo TM1637 possui 4 pinos, sendo que, dois deles, conforme falamos anteriormente referem-se à manipulação dos displays e os outros 2 possuem a função de alimentar o módulo. Repare que além dos segmentos destinados à representação dos algarismos, existem também segmentos para serem utilizados como “:” (dois pontos) para representação de horas.


Mãos à obra – Utilizando o módulo TM1637 com Arduino

Componentes necessários

Para desenvolver este projeto, precisaremos dos seguintes componentes:

Montando o projeto

Hardware utilizado para montagem do projeto usando Arduino Uno e Módulo TM1637
Hardware utilizado para montagem do projeto usando Arduino Uno e Módulo TM1637

Programando

Neste tutorial, nós vamos implementar uma aplicação na qual o usuário irá digitar um valor numérico de até 4 algarismos no Serial monitor e este mesmo valor será apresentado nos displays existentes no módulo TM1637.

#include <TM1637Display.h>

TM1637Display display(6,7);

int valorfinal;

void setup()
{
  Serial.begin(9600); 
  display.setBrightness(0x0f);
}

void loop() 
{ 
   char comando; 
   String numero; 
   if(Serial.available()>0) 
   { 
      for( int i = 0; i<4; i++) 
      { 
         comando = Serial.read(); 
         numero = numero + comando; 
      }
    valorfinal = numero.toInt(); 
   } 
   display.showNumberDec(valorfinal, false); 
}

Colocando para funcionar

Arduino imprimindo numero de 4 dígitos no módulo TM1637
Arduino uno imprimindo numero de 4 dígitos no módulo TM1637

Entendendo a fundo

Software

Neste ponto, serão demonstrados todos os passos para o desenvolvimento do código que deve ser inserido no Arduino UNO para que seja possível a realização da apresentação de algarismos em nosso display 4 dígitos com o módulo TM1637.

– Incluindo a biblioteca que será utilizada

O primeiro passo que devemos realizar para atingir o objetivo proposto consiste na inclusão das bibliotecas adequadas para permitir a interação do módulo TM1637 com o  Arduino UNO. Neste tutorial, nós vamos utilizar a biblioteca TM1637Display.h, que por sua vez, pode ser obtida neste link.

#include <TM1637Display.h>

– Criando o objeto da classe TM1637Display

Na parte de criação de objetos, nós devemos declarar dois parâmetros da implementação do objeto necessário para a manipulação do módulo, de modo que, o primeiro deles diz respeito ao clock, enquanto o segundo refere-se ao pino que será utilizado para a transmissão de dados.

TM1637Display display(6,7);

– Declarando a variável global do projeto

Posteriormente, nós declaramos a variável global valorfinal para armazenar o número inteiro que irá ser apresentado no display.

int valorfinal;

– Definindo as configurações iniciais

Na função setup() nós vamos iniciar a comunicação serial através da sentença Serial.begin() com uma taxa de 9600 bps.

void setup() 
{
  Serial.begin(9600);
  display.setBrightness(0x0f);
}

– Realizando as medidas de temperatura

Dentro da função loop(), nós criamos primeiramente duas variáveis que serão utilizadas para armazenar os valores que serão enviados para o Arduino através da porta serial. A variável comando receberá cada caractere presente na porta serial e a variável numero será responsável por conter o resultado da concatenação dos caracteres que chegarem na variável comando.

O procedimento de escrita dos valores no display tem seu início com a verificação da existência de caracteres para serem lidos no buffer da porta serial através da sentença Serial.available(). Caso exista algo para ser lido, utilizamos uma estrutura de repetição for para realizarmos a leitura de 4 caracteres e em seguida armazená-los na variável numero. Em seguida, convertemos o valor em questão de string para inteiro, que por sua vez, será utilizado como o primeiro argumento da sentença display.showNumberDec() (apenas como curiosidade, o segundo argumento da sentença em questão corresponde a opção de fazer com que o display apresente zeros para completar os 4 algarismos.

void loop()
{
  char comando;
  String numero;
  if(Serial.available()>0)
    {
      for( int i = 0; i<4; i++)
      {
        comando = Serial.read();
        numero = numero + comando;
      }
        valorfinal = numero.toInt();  
    }
  display.showNumberDec(valorfinal, false); 
}

Hardware

Alguns pontos importantes sobre este tutorial

Normalmente, além do que já foi dito, quando falamos em displays de 7 segmentos, nós também abordamos 2 pontos muito pertinentes quanto à manipulação dos mesmos, de modo que, o primeiro deles refere-se à maneira de como os segmentos estão interligados, que por sua vez, caracteriza os displays em questão como displays catodo comum ou anodo comum. Essa característica está ligada . Neste momento nós não vamos abordar este assunto, pois, como veremos posteriormente, a utilização do módulo TM1637 faz com que não seja necessário nos preocuparmos com configuração dos segmentos do display embutido no mesmo, portanto, este assunto será trazido à tona em um outro tutorial mais oportuno.

Além disso, o segundo ponto importante que citamos diz respeito ao procedimento utilizado quando queremos associar dois ou mais displays (utilizando os mesmos pinos de um Arduino para cada um) para mostrarem simultaneamente os diversos algarismos de um mesmo número. Geralmente, nestes casos, utiliza-se uma forma de multiplexar os displays, fazendo acionamentos e desligamentos dos mesmos, em instantes definidos e muito rápidos, porém, da mesma maneira, este assunto não será abordado neste tutorial, pois, a utilização do módulo TM1637 torna a representação de números de mais de um algarismo com mais de um display muito mais fácil.


Considerações finais

Neste tutorial, demonstramos como você deve proceder para utilizar o módulo TM1637 para controlar 4 displays de 7 segmentos. Esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões. Lembre-se de deixar suas dúvidas nos comentários abaixo.

Privacy Preference Center