Como utilizar o módulo display matriz de LED 8 x 32 com MAX7219 e Arduino
Anteriormente vimos como utilizar o módulo display matriz de LED 8×8 com MAX7219. No tutorial de hoje, aprenderemos como controlar o módulo display de LED 8 x 32 com MAX7219 usando o Arduino.
O módulo display matriz de LED 8 x 32 com MAX7219 é composto por 4 matrizes de LED 8 x 8 com o CI MAX7219 interligadas em série, formando um total de 256 LEDs.

Por utilizar o CI MAX7219, o módulo display matriz de LED 8 x 32 com MAX7219 é controlado por meio da interface SPI, sendo necessários o uso de apenas 3 pinos de dados do microcontrolador. A pinagem do módulo encontra-se detalhada na Figura 2.

Na sua estrutura, temos do lado esquerdo 5 pinos para alimentação e comunicação com o microcontrolador, são eles VCC, GND, DIN, CS e CLK.
- VCC: Alimentação de 5V;
- GND: Aterramento do módulo;
- DIN: Pino de dados de entrada de dados;
- CS: Pino de seleção. Os dados são carregados para o registrador de deslocamento enquanto CS estiver configurado em nível baixo;
- CLK: Pino de clock serial.
Agora que já conhecemos um pouco do módulo display matriz de LED 32 x 8 com MAX7219, vamos aprender como utilizá-lo em conjunto com o Arduino.
MATERIAIS NECESSÁRIOS
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Módulo Display Matriz de LED 8×32 com MAX7219;
- 1 x Cabo USB;
- Jumpers macho-fêmea.
ESQUEMÁTICO DE LIGAÇÃO
Monte o circuito da Figura 3 utilizando módulo display matriz de LED 8 x 32 com MAX7219 e os jumpers.

Ao montar o circuito observe os seguintes pontos:
- O VCC do módulo deve ser conectado ao pino 5V do Arduino;
- O GND do módulo deve ser conectado ao pino GND do Arduino;
- O Pino DIN do módulo deve ser conectado ao pino digital 7;
- O Pino CLK do módulo deve ser conectado ao pino digital;
- O Pino CS do módulo deve ser conectado ao pino digital 5.
ELABORANDO O CÓDIGO
Após a montagem do circuito, vamos programação do Sketch no Arduino IDE. Nesse projeto, vamos utilizar o módulo display matriz de LED 8 x 32 com MAX7219 para exibir o texto “Blog da Robótica” deslizando na tela.
Para fazer a utilização módulo display matriz de LED 8 x 32 com MAX7219, vamos utilizar as bibliotecas “MD_Parola.h” e “MD_MAX72xx.h”. Para instalá-las, abra o gerenciador de bibliotecas e busque pelo seus nomes, conforme as Figura 4 e 5.


Vamos entender a lógica de programação deste projeto a partir dos seguintes passos:
1. Incluir as bibliotecas
Iniciamos a programação incluindo as bibliotecas “MD_Parola.h”, “MD_MAX72xx.h” e “SPI.h”. Elas serão responsáveis por facilitar a comunicação com o módulo e exibir o texto no display.
2. Definir o tipo de hardware utilizado no módulo
Neste código, foi utilizado o hardware “DR1CR0RR0_HW (FC16_HW)”, mas pode ser que em alguns módulos não funcione.
Para solucionar este problema, basta alterar o tipo de hardware na variável HARDWARE_TYPE. A Tabela 1 exibe alguns tipos que podem ser utilizados.
| DR0CR0RR0_HW |
| DR0CR0RR1_HW |
| DR0CR1RR0_HW(GENERIC_HW) |
| DR0CR1RR1_HW |
| DR1CR0RR0_HW (FC16_HW) |
| DR1CR0RR1_HW |
| DR1CR1RR0_HW (PAROLA_HW) |
| DR1CR1RR1_HW (ICSTATION_HW) |
3. Definir o número CIs MAX7219
A variável MAX_DEVICES especifica o número de CIs MAX7219 usados. Cada display da matriz de LED possui 1 CI, portanto definimos MAX_DEVICES como 4.
4. Declarar os pinos do módulo conectados ao Arduino
Definimos as constantes PinDIN, PinCS e PinCLK correspondentes aos pinos digitais 11, 10 e 13 do Arduino.
5. Criar objeto do tipo MD_Parola
Em seguida, criamos o objeto do tipo MD_Parola passando como parâmetros o tipo de hardware, o pino conectado ao CS do módulo e a quantidade de CIs MAX7219.
6. Inicialização do módulo
Na função setup, chamamos a função P.begin() que será o responsável pela inicialização do módulo.
7. Definir texto que será mostrado
Para configurar o texto, utilizaremos a função P.displayText, que recebe os parâmetros (texto, alinhamento, velocidade, pausa, efeito de entrada, efeito de saída).
- Texto: Texto que deverá ser exibido no display. Em nosso exemplo: Blog da Robotica. Observação: O texto deve estar entre aspas duplas;
- Alinhamento: O texto pode ser alinhado à esquerda (PA_LEFT), centro (PA_CENTER) ou direito (PA_RIGHT);
- Velocidade: Será responsável por definir o tempo, em milissegundos, entre os frames de animação, quanto maior seu valor, mais lenta será a exibição do texto;
- Pausa: Terá a função de definir o tempo, em milissegundos, entre as animações, caso houver mais de uma mensagem a ser exibida;
- Efeitos de entrada e saída: Define os efeitos de entrada e saída do texto.
Estes efeitos podem ser encontrados no próprio exemplo “Parola_Animation_Catalog” da biblioteca MD_Parola. Para acessar, basta seguir o caminho: Arquivo > Exemplos > MD_Parola > Parola_Animation_Catalog, conforme mostrado na Figura 6.

Também foi chamada a função “P.displayAnimate()” que será responsável por animar a tela com os parâmetros definidos no “P.displayText”.
Ao final, o Sketch deste projeto ficará da seguinte maneira:
/*
-- MÓDULO MATRIZ DE LED 8 X 32 COM MAX7219 --
=================================================
=== BLOG DA ROBOTICA - www.blogdarobotica.com ===
=================================================
Autor: Jonas Souza
E-mail: [email protected]
Facebook: facebook.com/blogdarobotica
Instagram:@blogdarobotica
YouTube: youtube.com/user/blogdarobotica
=================================================
=== CASA DA ROBOTICA - www.casadarobotica.com ===
=================================================
Facebook: facebook.com/casadaroboticaoficial
Instagram:@casadarobotica
==================================================
*/
//Inclusão das bibliotecas
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::DR1CR0RR0_HW // definição do tipo de hardware
#define MAX_DEVICES 4 // Número de displays de leds a serem utilizados
#define PinDIN 11 //Pino DIN se conecta com a porta digital 11 do arduino
#define PinCS 10 //Pino CS se conecta com a porta digital 10 do arduino
#define PinCLK 13 //Pino CLK se conecta com a porta digital 13 do arduino
MD_Parola P = MD_Parola(HARDWARE_TYPE, PinCS, MAX_DEVICES); //Manda as informações definidas para a biblioteca
void setup(){
P.begin(); //Incia a comunicação de dados
}
void loop(){
if (P.displayAnimate()) //será responsável por animar a tela com os parâmetros definidos no “P.displayText”.
P.displayText("Blog da Robotica", PA_CENTER, 40, 1, PA_SCROLL_LEFT, PA_SCROLL_LEFT); //Configura o texto que será exibido
}
O funcionamento do projeto pode ser visualizado no Vídeo 1:
Espero ter ajudado,
Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!
Att. Jonas Souza
Graduando em Engenharia Elétrica.
