Componentes Eletronicos

Tutorial Matriz de LED no Arduino

Eletrogate 22 de julho de 2021

Introdução

Com certeza, você já deve ter ouvido falar sobre os LEDs, pois ele está presente em diversos lugares, não apenas na área da eletrônica. Isso porque os LEDs possuem diversas aplicações, por exemplo, as lâmpadas atuais são de LED, pois possui menos perda de energia com o calor; na sinalização, para saber se algo está ligado ou desligado; para informar dígitos, como é o caso dos displays de sete segmentos; ou até mesmo para escrever ou fazer animações, como é o caso da matriz de LED.

Os diodos são componentes eletrônicos que permitem a passagem de corrente elétrica em apenas um sentido e possuem diversas aplicações. O LED (Light Emitting Diode) é um diodo que, quando percorrido por uma corrente elétrica, emite luz.

Com os conhecimentos adquiridos neste post, você será capaz de utilizar as matrizes de LED no seu projeto, pois serão explicados em detalhe o seu funcionamento e a sua programação no IDE do Arduino.


Como Funciona a Matriz de LED

Assim como os displays de sete segmentos, que possuem duas configurações, os chamados anodo comum e o catodo comum, a matriz de LED também possui duas configurações, como podemos visualizar a seguir.

Blog-Eletrogate-Matriz-Led-1

Figura 1 – Anodo comum em relação a linha.

Blog-Eletrogate-Matriz-Led-2

Figura 2 – Catodo comum em relação a linha.

Para sabermos qual das configurações a sua matriz de LED possui, devemos pesquisar pelo datasheet de seu componente.

Em ambos os casos, o funcionamento é muito similar, por exemplo, para acendermos o LED localizado na linha 4 e coluna 5, e se possuímos uma matriz com a configuração da Figura 1, devemos colocar a linha 4 no estado HIGH e a coluna 5 em estado LOW, como pode ser visto a seguir.

Blog-Eletrogate-Matriz-Led-3

Figura 3 – Acendendo o LED da linha 4 e coluna 5.

Por outro lado, se possuímos uma matriz com a configuração da Figura 2, devemos colocar a linha 4 no estado LOW e a coluna 5 em estado HIGH, para termos uma polarização direta no LED e assim acendê-lo, como pode ser visto a seguir.

Blog-Eletrogate-Matriz-Led-4

Figura 4 – Acendendo o LED da linha 4 e coluna 5.

Porém, note que em ambos os casos é necessário a limitação de corrente para evitar a queima do LED.

Cuidados na utilização da matriz de LED

Note que teremos um problema, se quisermos acender o LED da linha 4 e coluna 5, mas também o LED da linha 6 e coluna 4, acenderá quatro LEDs e não apenas dois, como podemos ver a seguir.

Blog-Eletrogate-Matriz-Led-5

Figura 5 – Problema ao tentar acionar 2 LEDs.

Para resolver esse problema, temos que utilizar a técnica da multiplexação, que consiste em ligar uma linha ou coluna por vez, ou seja, os LEDs que queremos que acenda ficará piscando, mas com uma frequência tão alta que o olho humano não consegue perceber. Por exemplo, para conseguirmos acionar os dois LEDs da matriz com a configuração da Figura 5 devemos colocar, primeiramente, a linha 4 em estado HIGH e a coluna 5 em LOW, depois retornar a linha 4 em estado LOW e a coluna 5 em HIGH. Após isso, devemos colocar a linha 6 em HIGH e a coluna 4 em LOW, depois retornar a linha 6 em estado LOW e a coluna 4 em HIGH e fazer o loop. Assim, teremos a impressão de que apenas dois LEDs estão ligados, contornando o problema.

Outro problema que temos ao utilizar a matriz de LED é a utilização de 16 portas do Arduino, o que é algo inviável. Para resolvermos esse problema, podemos utilizar o circuito integrado MAX7219, que será explicado a seguir.


MAX7219

Esse circuito integrado foi projetado para a multiplexação, sendo usado para controlar displays de sete segmentos de até 8 dígitos ou uma matriz de LED. A utilização desse circuito integrado facilita a programação, pois já existe uma biblioteca para esse componente, podendo facilmente escrever caracteres, controlar a intensidade da luz dos LEDs, entre outras funções. Além dessa facilidade, com a utilização desse circuito integrado, passamos a utilizar apenas 3 pinos para o controle da matriz de LED, que são o DIN, CS e o CLK.

A conexão da matriz de LED no MAX7219 é um pouco complexa e depende da configuração da sua matriz de LED, tendo que olhar o datasheet do seu componente para identificar a numeração correta de cada pino para fazer as ligações. Porém, na loja da Eletrogate podemos encontrar o módulo matriz de LED, que já possui todas as conexões feitas, pronta para o uso


Utilizando o módulo matriz de LED com o Arduino

Agora faremos as conexões do módulo matriz de LED na placa Arduino e a sua programação.

Materiais necessários para o projeto Matriz de LED no Arduino

Conexão

Conecte o módulo matriz de LED como mostrado a seguir.

Blog-Eletrogate-Matriz-Led-Ligacao

Instalando a biblioteca MD_MAX72XX

Para instalarmos a biblioteca MD_MAX72XX, devemos seguir os seguintes passos:

No IDE do Arduino, Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Como visto a seguir:

Blog-Eletrogate-Matriz-Led-Arduino-IDE-2

Em seguida, digite MD_MAX72XX na busca e instale a biblioteca mostrado a seguir.

Blog-Eletrogate-Matriz-Led-Arduino-IDE-3

Código

/***********************************
 *     Incluindo a biblioteca      *
 ***********************************/
#include <MD_MAX72xx.h>

/***********************************
 *           Definicoes            *
 ***********************************/
#define  DELAYTIME  120  //Controla a velocidade em que o texto se desloca

#define TIPO_DO_HARDWARE MD_MAX72XX::GENERIC_HW  // Modelo da matriz de LED

#define MAX_MODULOS  1   // Quantidade de matriz de LED que o seu projeto possui

#define DATA_PIN  10  // Pino do DIN
#define CS_PIN    9   // Pino do CS
#define CLK_PIN   8   // Pino do CLK


/**********************************
 *     Criando o objeto matriz    *
 **********************************/
MD_MAX72XX matriz(TIPO_DO_HARDWARE, DATA_PIN, CLK_PIN, CS_PIN, MAX_MODULOS);


/**********************************
 *             Setup              *
 **********************************/
void setup() 
{
  matriz.begin();
  matriz.control(MD_MAX72XX::INTENSITY, MAX_INTENSITY/2);  //Controla a intensidade dos LEDs e MAX_INTENSITY é a intensidade maxima
}


/**********************************
 *         Loop principal         *
 **********************************/
void loop() // Loop principal
{
  escrever_texto("Eletrogate   ");  //Escreve na matriz o texto passado como parâmetro, que no caso é Eletrogate
}


/**********************************
 *     Funcao escrever_texto      *
 **********************************/
void escrever_texto(const char *p)  //Função que escreve o texto
{
  byte charWidth;
  byte cBuf[8];  

  matriz.clear();  //Desliga todos os LEDs da matriz

  while (*p != '\0')
  {
    charWidth = matriz.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf);

    for (byte i = 0; i <= charWidth; i++)  
    {
      matriz.transform(MD_MAX72XX::TSL);  //TSL = desloca um pixel para a esquerda
      if (i < charWidth)
        matriz.setColumn(0, cBuf[i]);
      delay(DELAYTIME);
    }
  }
}

Funcionamento


Conclusão

Agora você pode utilizar a matriz de LED para fazer diversos projetos, como letreiros e até mesmo animações. Note que é possível juntar diversas matrizes para formar um painel e melhorar a visualização. Na loja da Eletrogate podemos encontrar um módulo com 4 matrizes de LED!

A biblioteca utilizada possui diversas outras funções além do que foi mostrado, logo, recomendo que olhe a documentação da biblioteca para obter mais funcionalidades.

Muito obrigado por ter lido até aqui e bons estudos!

Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!


Sobre o Autor


Bruno Daigo Yamamoto

Cursando engenharia eletrônica. Apaixonado por eletrônica, programação e matemática.


Eletrogate

22 de julho de 2021

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!