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: contato@blogdarobotica.com 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.