fbpx
ArduinoNovidade

Como utilizar o módulo display matriz de LED 8×8 com MAX7219 e Arduino 

Uma matriz de LED 8 x 8 (Figura 1) é um dispositivo capaz de exibir efeitos visuais pré-programados por um microcontrolador. Este componente possui um total de 64 LEDs interligados, dispostos em 8 linhas e 8 colunas, e é comumente utilizado para produzir efeitos visuais, exibindo textos, números e desenhos. 

Figura ilustrativa de uma matriz de LED 8x8
Figura 1: Matriz de LED 8×8.

Apesar de ser simples, o uso da matriz de LED 8×8 com microcontroladores requer o uso de muitas portas digitais, o que pode ser um problema em projetos maiores. A utilização do CI MAX7219 facilita o uso da matriz de LED, possibilitando controlá-la com apenas três pinos para comunicação SPI.  

O módulo display matriz de LED 8×8 com MAX7219 acopla uma matriz de LED 8 x 8 e o CI MAX7219, sendo ideal para projetos com Arduino, ESP8266, ESP32, Raspberry Pi, entre outros.

Figura ilustrativa de um Módulo display de LED 8x8 com MAX7219.
Figura 2: Módulo display de LED 8×8 com MAX7219.

Podemos conectar vários módulos displays matriz de LED 8×8 com MAX7219 entre si e ainda usar os mesmos três pinos para comunicação com o microcontrolador. 

O módulo display matriz de LED 8×8 com MAX7219 possui sua pinagem detalhada na Figura 3. 

Figura ilustrativa de pinos do módulo display da matriz de LED 8x8 com MAX7219.
Figura 3: Pinos do módulo display matriz de LED 8×8 com MAX7219.

Os pinos da esquerda são utilizados para comunicação com o microcontrolador.  

  • VCC: Alimentação de 5V. A alimentação deve ser feita for uma fonte externa quando mais de um módulo display matriz de LED 8×8 com MAX7219 for utilizado;
  • 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. 

Os pinos da direita são utilizados para conectar um módulo display matriz de LED 8×8 com MAX7219 com outro. 

Agora que já conhecemos um pouco do módulo display matriz de LED 8×8 com MAX7219, vamos aprender como utilizá-lo em conjunto com o Arduino.  

Nesse tutorial, vamos aprender como utilizar o módulo matriz de LED 8×8 com o driver MAX7219 e Arduino. 

MATERIAIS NECESSÁRIOS 

ESQUEMÁTICO DE LIGAÇÃO 

Monte o circuito da Figura 4 utilizando o Módulo Display matriz de led 8×8 com Max7219 E os Jumpers.

Figura ilustrativa de um esquemático de ligação para uso do módulo matriz de LED 8x8 com o driver MAX7219.
Figura 4: Esquemático de ligação para uso do módulo matriz de LED 8×8 com o driver MAX7219.

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×8 com MAX7219 para exibir o desenho de um coração. 

Para facilitar o uso do módulo display matriz de LED 8×8 com MAX7219, vamos utilizar a biblioteca LedControl.h”. Para instalar, abra o gerenciador de bibliotecas e realize a busca, conforme a Figura 5.

 

Figura ilustrativa da biblioteca ledControl no Arduino IDE.
Figura 5: Biblioteca ledControl no Arduino IDE.

Vamos entender a lógica de programação deste projeto a partir dos seguintes passos: 

1. Incluir as bibliotecas LedControl.h e binary.h 

A biblioteca LedControl.h será responsável pelo controle da matriz de LED usando o MAX7219. 

A biblioteca binary.h auxiliará na definição de constantes binárias. 

2. Declarar as constantes correspondentes aos pinos do Arduino 

Definimos que as constantes PinCS, PinCLK e Din correspondentes aos pinos 5, 6 e 7 do Arduino, respectivamente. 

3. Criar objeto do tipo LedControl 

Em seguida, criamos o objeto do tipo LedControl passando como parâmetros os pinos conectados ao DIN, CLK, CS e o número de displays conectados ao Arduino.  

4. Criar função que define o desenho do coração 

Para definir o desenho utilizaremos a função lc.setRow que controla linha por linha da matriz de LED. Essa função recebe 3 argumentos: o endereço da matriz de LED, a linha e o valor do byte para que os LEDs sejam acesos.  

O valor do byte segue a codificação binária em que 1 representa o LED ligado e 0 o LED desligado. 

Por exemplo: O número binário B00010010 ligará os LEDs 4 e 7, mantendo os outros desligados. 

Dica: Para facilitar a identificação do código binário de um desenho utilizaremos um gerador, disponível no link: 

www.blogdarobotica.com/geradormatrizLED 

5. Inicialização do módulo display

Na função setup, definiremos os comandos que serão utilizados na inicialização do módulo matriz:

  • O comando lc.shutdown definido como false retira o módulo do modo de desligamento e inicia seu funcionamento;
  • O comando lc.setIntensity define a intensidade de brilho do módulo;
  • O comando lc.clearDisplay limpa a tela da matriz de LED, fazendo com que ela inicie com exibição em branco;
  • Mostrando o desenho na matriz de LED.

Na função loop(), chamamos a função desenho() para acionamento dos LEDs da matriz formando um coração por 5 segundos. Em seguida, chamamos a função lc.clearDisplay para limpar a matriz e deixa-la branca por 1 segundo.

Ao final, o Sketch deste projeto ficará da seguinte maneira:

/*
  --   MÓDULO MATRIZ DE LED 8 X 8 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
  ==================================================
*/

#include "LedControl.h" //Inclui a biblioteca para controle da matriz de LED
#include "binary.h" //Inclui a biblioteca para auxiliar na definição de constantes binárias

#define PinCS 5;  //Define que o Pino CS do módulo está conectado com a porta digital 5 do Arduino
#define PinCLK 6; //Define que o Pino CLK do módulo está conectado com a porta digital 6 do Arduino
#define PinDin 7; //Define que o Pino Din do módulo está conectado com a porta digital 7 do Arduino

LedControl lc = LedControl(7, 6, 5, 1); //Objeto que passa como parâmetros os pinos do Arduino conectados e o número de displays usados

/*Função responsável por fazer o desenho que será mostrado no display

  lc.setRow(x,y,b) onde x= numero da coluna, y = numero da linha e B = numero binario que pode ser obtido
  no site:https://embed.plnkr.co/3VUsekP3jC5xwSIQDVHx
*/

void desenho() { //Binários que representam o coração
  lc.setRow(0, 0, B00000000);
  lc.setRow(0, 1, B00100010);
  lc.setRow(0, 2, B01010101);
  lc.setRow(0, 3, B01001001);
  lc.setRow(0, 4, B01000001);
  lc.setRow(0, 5, B00100010);
  lc.setRow(0, 6, B00010100);
  lc.setRow(0, 7, B00001000);
}

void setup() {
  lc.shutdown(0, false); //Inicia o módulo
  lc.setIntensity(0, 8); //Define a itensidade de brilho do display
  lc.clearDisplay(0);  //Limpa a tela do display
}

void loop() {
  desenho(); // chamada da função de desenho
  delay(5000); // delay de 5 segundos
  lc.clearDisplay(0); //limpeza do display
  delay(1000); // delay de 1 segundo até que se tenha uma nova repetição
}

O funcionamento do projeto pode ser visualizado no Vídeo 1:

Vídeo 1: Funcionamento da matriz de LED 8×8 com MAX7219 e Arduino.

Espero ter ajudado,

Obrigado a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Jonas Souza

Dúvidas? Deixe seu comentário

Jonas Souza

Graduando em Engenharia Elétrica.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.