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

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 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.

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.


Registradores e multiplexação

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.


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.



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.


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
Obrigado pelo comentário.