Como usar o módulo TM1638 com Arduino - Arduino e Cia
Como usar o módulo TM1638 com Arduino
Um módulo muito fácil de utilizar e que pode ser adaptado aos mais variados projetos é o Módulo Display 7 Segmentos 8 dígitos TM1638, mostrado abaixo, que além do display tem 8 botões de uso geral e fácil conexão com o Arduino, como veremos neste post.
Vamos conhecer um pouco mais sobre esse interessante módulo e conectá-lo em uma placa Arduino Uno para realizarmos os primeiros testes.
O Módulo Display 7 Segmentos 8 dígitos TM1638
Na imagem podemos ver os detalhes do módulo que, além do display de 7 segmentos e 8 dígitos, tem ainda 8 botões tipo push-button de uso geral e 8 leds na parte superior. Esses componentes podem ser acionados individualmente, possibilitando a criação de painéis de controle ou a utilização da placa para fins educativos.
A comunicação com o microcontrolador utiliza apenas 3 pinos (STB, CLK e DO) e a alimentação da placa é feita com tensões entre 3.3 e 5 VDC. O controlador é o TM1638 (datasheet) e a placa possui 4 furos para que você possa prendê-la em algum suporte ou gabinete de sua preferência.
O módulo TM1638 é capaz de mostrar tanto números como (alguns) caracteres no display de 7 segmentos, portanto uma placa com variadas possibilidades de utilização e também um baixo custo. Funciona não só com Arduino mas também com Raspberry Pi, como veremos futuramente.
Conexão do módulo TM1638 ao Arduino
Nos testes conectamos o TM1638 ao Arduino Uno utilizando a seguinte configuração:
Pino STB conectado ao pino 4 do Arduino
Pino CLK conectado ao pino 7 do Arduino
Pino DO conectado ao pino 8 do Arduino
Montamos o circuito seguindo o esquema abaixo:
A conexão é bem simples, e ao energizar o Arduino um led indicador de funcionamento também é aceso no módulo TM1638 (logo acima dos pinos de conexão). Com isso a placa está pronta para uso.
Programa de controle módulo TM1638
O programa a seguir utiliza a biblioteca TM1638Lite, que pode ser instalada a partir da própria IDE do Arduino. Acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas e procure por tm1638, clicando em seguida em Instalar, como mostrado na imagem abaixo:
O primeiro programa mostra a utilização de caracteres no display e também os botões do módulo, que acionam os leds da parte superior:
//Programa: Modulo TM1638 com Arduino
#include <TM1638lite.h>
//Conexao dos pinos STB, CLK e DO
TM1638lite tm(4, 7, 8);
tm.displayText("Arduino");
tm.displayText("BOTOES");
//Verifica se algum botao foi pressionado
uint8_t buttons = tm.readButtons();
//Acende o led correspondente
doLEDs(buttons);
void doLEDs(uint8_t value)
for (uint8_t position = 0; position < 8; position++)
tm.setLED(position, value & 1);
Utilizamos o comando tm.displayText() para mostrar uma mensagem no display (linhas 15 e 17 do programa). Note que nem todos os caracteres podem ser mostrados, devido às limitações do display de 7 segmentos.
Também é possível utilizar o comando tm.displayASCII() para mostrar um caracter em um display específico. O comando tm.displayASCII(3, 'A'), por exemplo, mostra o caracter A no 4o. display (eles são numerados de 0 a 7). O comando tm.setLED() é utilizado para acionar os leds da placa.
Neste outro exemplo, é mostrado um contador na tela que é atualizado a cada 1 segundo:
//Programa: Contador com Modulo TM1638
int digito7, digito6, digito5, digito4;
tm.displayText("Contador..");
//Separa o numero do contador em digitos
digito7 = (contador % 10);
digito6 = ((contador / 10) % 10);
digito5 = ((contador / 100) % 10);
digito4 = ((contador / 1000) % 10);
//Mostra os digitos no display
tm.displayHex(7, digito7);
tm.displayHex(6, digito6);
tm.displayHex(5, digito5);
tm.displayHex(4, digito4);
Neste programa temos o comando tm.displayHex(), que mostra um número no display desejado. O comando tm.displayHex(7, 2), por exemplo, mostra o número 2 no dígito 7 (o último) do display.
Clique aqui e confira outros posts utilizando displays aqui no Arduino e Cia!
Postado por Arduino e Cia às 13:48
Marcadores: display, display 7 segmentos, tm1638
Cicero Matos 7 de março de 2019 15:38
Esta bilblioteca serve para placas com 16 teclas ??
Arduino e Cia 23 de março de 2019 10:58
Se for o mesmo controlador, não vejo problemas. Apenas troque o número 8 na linha 30 por 16, para que ele leia todas as teclas.