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.