Como usar o módulo TM1637 com Arduino
Neste post vamos mostrar como utilizar o módulo TM1637 com Arduino. Você verá que é um módulo bem simples de usar, e que pode ser utilizado nas mais variadas situações.
O TM1637 é um módulo que possui um display de 7 segmentos e 4 dígitos, utilizando somente 2 pinos de conexão ao microcontrolador. Além da utilização como contador, também é um display perfeito para montar um relógio com Arduino, já que o display conta com os “2 pontos” na parte central.
O módulo TM1637
À primeira vista o TM1637 é muito parecido com o módulo 74HC595, que já vimos aqui no blog. Ambos são displays de 7 segmentos e 4 dígitos, mas com controladores diferentes.
Na imagem abaixo, podemos ver que o módulo TM1637 é um pouco mais voltado para a construção de relógios e coisas do tipo, pois possui a pontuação central no display. Já o 74HC595 tem o ponto decimal em todos os dígitos.
Olhando na parte traseira do módulo TM1637, observamos a pinagem, que é composta pelos pinos de alimentação (Vcc e GND) e dois pinos de controle/comunicação: CLK (clock) e DIO (dados):
O datasheet do TM1637 você encontra neste link.
Conectando o módulo no Arduino
Neste exemplo vamos usar o TM1637 para mostrar o valor de uma porta analógica do Arduino.
Utilizando um potenciômetro, variamos a tensão na porta entre 0 e 5V, que são interpretados pelo microcontrolador como valores entre 0 e 1023. São esses valores que serão mostrados no display.
Vamos conectar o TM1637 nas portas digitais 4 (pino CLK/Clock do módulo) e 5 (pino DIO/Dados). O potenciômetro será ligado na porta analógica A0:
O potenciômetro utilizado foi um de 10K, mas você pode utilizar outros valores para teste, ok?
Programa TM1637 com Arduino
O programa utiliza a biblioteca TM1637, que você pode baixar neste link. Infelizmente ainda não é possível baixar essa biblioteca usando a IDE do Arduino, então faça o download do arquivo, descompacte e coloque a pasta TM1637 dentro da pasta LIBRARIES da IDE do Arduino
O funcionamento do programa é bem simples, sendo que no loop efetuamos a leitura da porta analógica, atribuindo o valor lido à variável “valor”. Essa variável é colocada no comando que vai mostrá-la no display, no caso, o comando
display.showNumberDec(parâmetro1, parâmetro2).
O parâmetro1 é o número que queremos mostrar no display (no caso, o valor lido do potenciômetro), e o parâmetro2 determina se vamos colocar zeros à esquerda do número mostrado, e recebe TRUE se você quiser mostrar zeros à esquerda, e FALSE caso não queira.
//Programa: Modulo TM1637 com Arduino //Autor: Arduino e Cia #include <Arduino.h> #include <TM1637Display.h> //Pinos de controle do modulo #define CLK 4 #define DIO 5 #define pin_pot A0 //Inicializa o display TM1637Display display(CLK, DIO); int valor; void setup() { pinMode(A1, INPUT); } void loop() { //Define o brilho do display display.setBrightness(0x0f); //Le o valor do potenciometro valor = analogRead(pin_pot); //Mostra o valor no display display.showNumberDec(valor, false); delay(10); }
O programa de exemplo da biblioteca (TM1637Test) mostra também como você pode usar comandos para acender somente determinados segmentos do display (útil se você quiser escrever alguns caracteres como A, E, C, etc), usar os dois pontos no centro do display quando você está utilizando o display para mostrar a hora usando um módulo RTC, acender dígitos individualmente, entre outras opções.
Parabéns pela postagem.
Qual é o softwares que voces usam pra desenhar o projeto?
DEsde já, agradeço
Oi Brian,
Muito obrigado. Usamos o Fritzing, que você pode baixar em fritzing.org 🙂
Abraço!
Adilson
Olá. Consigo usar dois modulos ao mesmo tempo ? Dois relógios ?
Oi Sergio,
Consegue sim, perfeitamente.
Abraço!
Adilson
Olá, eu também fiquei com a mesma dúvida. Eu quero usar 2 display desse ao mesmo tempo. Para isso eu tenho que fazer:
#define CLK1 4
#define DIO2 5
#define CLK2 6
#define DIO2 7
TM1637Display display(CLK1, DIO1);
TM1637Display display(CLK2, DIO2);
É isso mesmo? Ele utiliza qualquer pino I/O como CLK ou DIO???
Pode sim, utilizar qualquer pino para CLK e DIO, e se não me engano, o pino de clock pode ser o mesmo para ambos os displays.
O que você precisa é declarar display1 e display2:
TM1637Display display1(CLK1, DIO1);
TM1637Display display1(CLK1, DIO2);
olá, gostaria de realizar o controle dos números com potenciômetro de forma analógica, sem arduíno. Alguém como seria possível? que componentes precisaria ter??
como faço para colocar os dois pontos e para separar os numeros , ou seja colocar min e seg ?
Boa tarde,
Por favor dê uma olhada nos arquivos de exemplo da biblioteca. Existe um exemplo usando os dois pontos, por exemplo.
Abraço!
Adilson
[…] Aqui no Arduino e Cia você também encontra posts com os “primos” do TM1640. Temos o TM1638, que você pode usar com Raspberry Pi e Arduino, e o TM1637, mostrado no post Como usar o módulo TM1637 com Arduino. […]
Ola! tudo bem? Eu estou querendo fazer um projeto assim, mas tenho o display 74HC595, e possível adaptar? Poderia me da uma luz de como seria? Obrigado?
Oi Tim!
Tudo bem? Eu acho que tenho o post que você precisa, usando o displah 74HC595: https://www.arduinoecia.com.br/contador-com-modulo-display-4-digitos-74hc595/
Espero que ajude. Abraço!
Adilson
Ola Adilson! Obrigado pelo retorno. Eu ate vi esse também, seria mais ou menos isso. mas preciso que o controle seja por um potenciômetro, nao sei o que devo modificar.
Oi Tim,
Entendi. No caso, o potenciômetro teria qual função?
Adilson
Na verdade e a mesma função que esta neste post. e exatamente isso que preciso, so que meu display nao e o TM1637 e sim o 74HC595. tentei usar o mesmo codigo, mudado apenas a biblioteca mas nao funciona. o meu tambem tem um pino a mais.
Oi Tim,
Entendi. Vc tem um link aí do display que vc usou, pra eu dar uma olhada?
Abraço!
Adilson
A função dos botões como esse que me mandou. aumentar e diminuir o valor.
Como consigo um modulo grande para arduino para 3 digitos .? Estava pensando entre 15 e 20 cm de altura por 15 x 20 cm de altura cada um ;