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!
