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