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, 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 com Arduino
Nos testes conectamos o TM1638 ao Arduino Uno utilizando a seguinte configuração de conexão dos pinos:
- STB conectado ao pino 4 do Arduino
- CLK conectado ao pino 7 do Arduino
- 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:
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
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 //Autor: Arduino e Cia #include <TM1638lite.h> //Conexao dos pinos STB, CLK e DO TM1638lite tm(4, 7, 8); void setup() { Serial.begin(9600); tm.reset(); //Mensagem inicial tm.displayText("Arduino"); delay(3000); tm.displayText("BOTOES"); } void loop() { //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); value = 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 //Autor: Arduino e Cia #include <TM1638lite.h> //Conexao dos pinos STB, CLK e DO TM1638lite tm(4, 7, 8); int contador = 0; int digito7, digito6, digito5, digito4; void setup() { Serial.begin(9600); tm.reset(); //Mensagem inicial tm.displayText("Contador.."); delay(2000); tm.reset(); } void loop() { //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); //Incrementa o contador contador++; //Aguarda 1 segundo delay(1000); }
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!
Esta bilblioteca serve para placas com 16 teclas ??
Oi Cicero,
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.
Abraço!
Adilson
[…] vimos o TM1638 no post Como usar o módulo TM1638 com Arduino, e ele é um display eficiente para mostrar números e (algumas) letras além de possuir algumas […]
Podemos usar quaisquer pinos do arduino?