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.

Frente display matriz de led 16x8TM1640

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):

Conexões display TM1640

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:

Circuito Arduino Uno e display matriz de led 16x8 TM1640

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!

Avalie este post!