Como usar o display matriz 16×8 TM1640 com Arduino
Um módulo com 128 leds, dispostos em uma matriz 16×8 e com comunicação usando apenas dois fios. Esse é o display matriz de led 16×8 TM1640, com leds na cor azul e que você pode usar para fazer interessantes projetos como mostradores, relógios e contadores, entre outras aplicações.
Antes de testar esse display, vamos dar uma olhada em sua estrutura e conexões.
O display matriz 16×8 TM1640
Esse display tem um tamanho reduzido (64 x 27,5mm), contando com 128 leds na cor azul dispostos em uma matriz de 16×8 (16 colunas e 8 linhas).
O controlador desse display é o TM1640, usado também em outros módulos para controle de displays 7 segmentos, por exemplo.

A conexão do display com o microcontrolador é feito por uma interface serial de dois pinos (SCK e DIN), o que torna a conexão bastante simples. Os outros dois pinos são reservados para alimentação (GND e 5V):

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.
Conexão do display TM1640 no Arduino
A conexão do display com o Arduino é bastante simples, como comentamos acima, e seguindo as restrições da biblioteca vamos utilizar os pinos SCK e DIN conectados nos pinos digitais 2 e 8 respectivamente:

Segundo o datasheet do TM1640 ele funciona com tensão de 5V (recomendado), logo conectamos esse pino no pino 5V do Arduino.
O display que testamos aqui também funciona normalmente com tensão de alimentação de 3.3V, o que permite o seu uso com módulos ESP8266 e ESP32, por exemplo.
Programa teste display 16×8
Infelizmente a biblioteca do TM1640 não está disponível para instalação a partir da IDE do Arduino, logo temos que fazer o download e instalar manualmente.
Baixe então a biblioteca TM1640 para Arduino, descompacte o arquivo e coloque a pasta descompactada dentro da pasta LIBRARIES da IDE.
O programa permite a geração de caracteres no display de modo muito prático: simplesmente altere a variável texto dentro do programa. Temos também a função de mostrar os números no formato de “relógio”, mostrando ou não os pontos separadores no meio do display.
//Programa: Display matriz de led 16x8 TM1640 com Arduino
//Autor: Arduino e Cia
//Carrega a biblioteca
#include "MeOrion.h"
//Display conectado nas portas 2 (SCK) e 8 (DIN) do Arduino
MeLEDMatrix ledMx(8, 2);
void setup()
{
Serial.begin(9600);
//Regula o brilho do display
ledMx.setBrightness(3);
ledMx.setColorIndex(1);
}
//Texto mostrado na tela
char *texto = "ABC";
void loop()
{
//Teste de todos os leds do display
const unsigned char bitmap[] = {0x01, 0x01, 0x01,
0x01, 0x01, 0x01,
0x01, 0x01, 0x01,
0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01
};
for (int i = 0; i <= 15; i++)
{
for (int j = -7; j <= 0; j++)
{
ledMx.clearScreen();
const unsigned char bitmap[] = {0x01};
ledMx.drawBitmap(i, j, 1, bitmap);
delay(50);
}
}
//Relogio - Use o primeiro parametro como hora, o segundo como minutos e
//o terceiro para ativar (1) ou desativar (0) o ponto central
ledMx.showClock(13, 50, 1);
delay(2000);
//Mostra o texto no display
ledMx.drawStr(-1, 7, texto);
delay(2000);
//Mostra números no display
ledMx.showNum(1.23);
delay(2000);
}
Esse display tem um brilho relativamente forte, mas você pode ajustar isso usando a função setBrightness() na linha 15 do programa. Uma opção é usar algo na frente do display, como um acrílico de cor escura por exemplo.
Com relação a biblioteca utilizada, creio que ela seja um pouco antiga e tem alguns problemas, mas se mostrou suficiente para os testes.
Viu como é fácil usar o display matriz 16×8 TM1640? Confira outros posts usando display aqui mesmo no Arduino e Cia!
Ola
Este codigo funciona para dusplays de 8×8 leds? Ou quais alterações devo fazer? Obrigado.
Oi Luis,
Depende do display que você estiver utilizando, mas se for o controlador TM1640 mesmo eu tentaria essa biblioteca aqui: https://github.com/maxint-rd/TM16xx
Nessa você define o número de linhas e colunas do display.
Abraço!
Adilson
Olá Adilson
A única indicação que ele tem na lateral é ‘1388AS’., e tem duas fileiras de 8 pinos cada.
Obrigado mais uma vez.
Luis Paulo
Oi Luis,
Acho que sei qual é. Dê uma olhada nos meus posts sobre Max7219, por favor. Creio que vai achar o que precisa.
Abraço!
Adilson
Gostaria de saber como comandar uma matriz de leds sem o Arduino
Boa noite,
Nunca usei o módulo dessa maneira, mas já montei um esquema para controlar a matriz de leds diretamente, usando resistores, transistores, etc. Deu bastante trabalho, prefiro o módulo.
Abraço!
Adilson