domingo - 07 / dezembro / 2025

Módulo de 4 matrizes de LEDs

Este post mostra como controlar um módulo de 4 matrizes de LEDs com Arduino e o funcionamento do chip MAX7219, da Maxim.

O módulo de 4 matrizes de LEDs

4 matrizes de LEDs

Este módulo contém 4 displays de LEDs 8×8 arranjados em série e cada um destes há um chip MAX7219.

Funcionamento do MAX7219

o chip que controla as matrizes de LEDs
O chip MAX7219 simplifica a interface entre um microprocessador e um display de 64 LEDs ou 8 displays numéricos de 7 segmentos, reduzindo o número de fios necessários para a conexão. Este chip faz uma interface com apenas três fios. O resistor R limita a corrente para os LEDs, enquanto o capacitor C filtra ruídos de alta frequência e melhora a estabilidade da tensão de alimentação.

O MAX7219 se comunica com o microcontrolador através da interface SPI. CLK é o sinal de clock, uma onda quadrada necessária para a sincronização e o funcionamento de qualquer circuito integrado digital, DIN é a entrada de dados de 16 bits, do D15 até o D0. Enquanto o CS ou LOAD controla a transferência de dados, quando o CS está no nível baixo ou “0”, os 16 bits vão para o registrador de deslocamento, após o último bit, CS emite um pulso.

O diagrama dos sinais em função do tempo. Fonte: datasheet do MAX7219.

Os 16 bits vão para um registrador de deslocamento, começando pelo bit mais significativo (MSB) até o bit menos significativo (LSB). Os 4 primeiros bits não são utilizados (D15 ao D12), os 4 bits seguintes (D11 ao D8) contêm o endereço e os 8 bits a seguir representam os dados.

o chip que controla as matrizes de LEDs
A configuração dos pinos do MAX7219. Fonte: datasheet do MAX7219.
Pode-se ligar vários MAX7219 em série, ligando o terminal DOUT de um chip com o terminal DIN do outro chip.

Registradores e multiplexação

Estes são os registradores (register) do MAX7219, cada um possui um endereço em hexadecimal (HEX CODE). Fonte: Deepblue Mbedded.

Os dados são armazenados em uma memória RAM. As funções de cada registrador são:

  • Digit 0 a 7: em uma matriz de 64 LEDs, cada um controla uma linha do display, enquanto que em um conjunto de 8 displays com 7 segmentos, controla cada digito.
  • Decode Mode: ativa um decodificador BCD code-B, com o propósito de controlar displays de 7 segmentos.
  • Intensity: controla o brilho dos LEDs por PWM.
  • Scan Limit: determina quantas linhas ou dígitos são mostrados.
  • Shutdown: desliga o display.

Também possui circuitos multiplexadores, que permitem controlar 64 LEDs com 16 terminais.

multiplexação em matrizes de LEDs
Em uma multiplexação, as linhas de uma imagem não são geradas de uma vez. No entanto, com alta velocidade, cria-se a ilusão de que todas as linhas são acionadas ao mesmo tempo. Fonte: FriendlyWire.
Multiplexação com dígitos. Fonte: Wikimedia Commons.

Com este módulo, é possível criar letreiros, relógios e mostrar qualquer informação.

Usando-o com Arduino

Primeiramente, é necessário baixar a biblioteca MD_MAX72XX, clique no ícone no lado esquerdo da janela, marcado com o círculo vermelho.

Ao escrever “MD_MAX72XX”, deve-se instalar a primeira biblioteca que aparece.

Com a finalidade de facilitar bastante a impressão de frases no display, vá no “Library Manager” na IDE do Arduino e na barra de busca, escreva MD_Parola. Em seguida, instale a biblioteca com este nome.

Se aparecer esta mensagem , clique em “Install all”.
Matrizes de LEDs com Arduino Nano.
Ligação com o Arduino Nano, mas pode usar qualquer outra placa Arduino.

O algoritmo a seguir.

#include <MD_Parola.h> //Bibliotecas que devem ser incluídas.
#include <MD_MAX72xx.h>
#include <SPI.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW //Define o módulo como FC-16, que é o módulo padrão de display 8x32.
#define MAX_DEVICES 4 //Define o número de displays de LEDs, que é 4.

#define DATA_PIN 5 //Definem as 3 ligações do módulo com o Arduino.
#define CS_PIN 6
#define CLK_PIN 7

//Cria uma instância para o display.
MD_Parola display=MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES); 


void setup() {
  display.begin();//Inicia o display.
  display.setIntensity(4);//Determina o brilho dos LEDs(de 0 a 15)
  display.displayClear();//Limpa o display.

  /*Na linha a seguir comanda o que deve ser impresso, o primeiro parâmetro após os parênteses é o alinhamento do texto. Sem este, o display fica muito rápido.
  O número do segundo parâmetro indica a velocidade da exibição do letreiro, quanto menor o número, mais rápido.
  O terceiro número indica o tempo de pausa após a exibição da mensagem no display.
  Os dois últimos parâmetros são os efeitos na exibição. Recomendável que coloque ambos PA_SCROLL_LEFT ou PA_SCROLL_RIGHT.*/

  display.displayText("Access Electrical e-Library!",PA_CENTER, 40, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);  
}

void loop() {
  if(display.displayAnimate()){ //O loop que permite a animação no display.
    display.displayReset();
  }
}

Um vídeo curto demonstrando o funcionamento.

Related Articles

  1. Olá Dr. Pedro Ney, bom dia☀️
    Parabéns pelo seu sucesso.
    Que Deus o abençoe com muita luz e muita sabedoria para que você continue presenteando a todos nós com os seus profundos conhecimentos.
    Muito agradecida pela sua atenção e generosidade em nos prestar informações tão preciosas

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisement -

Últimos posts