Código de Pesquisa

Matriz LED 8x8 Usando um Módulo Arduino MAX7219

Matriz LED 8x8 Usando um Módulo Arduino MAX7219

Neste tutorial, aprenderemos como controlar uma matriz de LEDs 8x8 usando um módulo MAX7219 com um Arduino. O MAX7219 simplifica o controle de múltiplos LEDs, permitindo que exibamos caracteres e padrões facilmente. Ao final deste projeto, você será capaz de exibir a palavra "ROBOJAX" na matriz.

Para alcançar isso, utilizaremos a biblioteca LedControl, que é especificamente projetada para interfacear com o MAX7219. Esta biblioteca nos permite enviar dados para a matriz de LEDs com mínimo esforço. Se você quiser uma compreensão mais clara da fiação e do código, não deixe de conferir o vídeo associado (no vídeo em 0:30).

Hardware Explicado

Os componentes principais deste projeto incluem o módulo MAX7219 e a matriz de LEDs 8x8. O MAX7219 é um circuito integrado que gerencia a exibição dos LEDs, lidando com os sinais de comunicação e controle do Arduino. Ele utiliza uma interface serial, o que significa que podemos controlar muitos LEDs com apenas alguns pinos do Arduino.

A matriz LED 8x8 consiste em 64 LEDs individuais dispostos em uma grade. Cada LED pode ser ligado ou desligado enviando os comandos apropriados através do MAX7219. Isso permite a exibição de vários caracteres e gráficos na matriz.

Detalhes da Ficha Técnica

FabricanteMaxim Integrated
Número da peçaMAX7219
Tensão de lógica/IO3,3V a 5,5V
Tensão de alimentação4,0V a 5,5V
Corrente de saída (por canal)40 mA máximo
Corrente de pico (por canal)100 mA máximo
Orientação sobre a frequência PWM100 Hz
Limiares de lógica de entrada2,0V (alto) / 0,8V (baixo)
Queda de tensão / RDS(on)/ saturação0,2V típico.
Limites térmicos150°C
Pacote16-DIP
Notas / variantesConfiguração de ânodo comum
  • Assegure um fornecimento de energia adequado (4,0V a 5,5V).
  • Use resistores limitadores de corrente para cada LED para evitar danos.
  • Mantenha a fiação curta para evitar interferências.
  • Monitore a dissipação de calor; use um dissipador de calor se necessário.
  • Verifique novamente as conexões dos pinos para evitar falhas de comunicação.

Instruções de Fiação

Para conectar o MAX7219 ao Arduino, ligue os seguintes pinos:

  • Conecte oVCCpino do MAX7219 para o 5V do Arduino.
  • Conecte oGNDpino ao terra do Arduino.
  • Conecte oDINpino (Dados de Entrada) para o pino 12 do Arduino.
  • Conecte oCLKpino (Relógio) para o pino 11 do Arduino.
  • Conecte oCSpino (Chip Select) para o pino 10 do Arduino.

Certifique-se de verificar se todas as conexões estão seguras antes de ligar o circuito. A fiação é simples, mas se você encontrar problemas, revise as conexões com cuidado (no vídeo em 1:45).

Exemplos de Código e Passo a Passo

No código, começamos incluindo a biblioteca LedControl, que é essencial para comunicar-se com o MAX7219. O trecho a seguir inicializa o objeto LedControl:

LedControl lc=LedControl(12,11,10,1);

Esta linha define o pino de dados, o pino de clock, o pino de seleção de chip e o número de dispositivos (1, neste caso). Em seguida, nosetup()função, ativamos o MAX7219 e definimos a intensidade do display:

lc.shutdown(0,false);
lc.setIntensity(0,8);
lc.clearDisplay(0);

Isso garante que o display esteja ativo e pronto para mostrar caracteres. A função principal que aciona o display éwriteArduinoOnMatrix(), que acende sequencialmente as linhas da matriz para exibir letras.

Demonstração / O que Esperar

Uma vez que tudo esteja conectado e o código esteja carregado, a matriz de LEDs deve exibir a palavra "ROBOJAX". Se o display não funcionar, verifique se há problemas como conexões soltas ou atribuições de pinos incorretas. Além disso, certifique-se de que a fonte de alimentação é adequada (no vídeo às 2:30).

Capítulos

  • Introdução (0:00)
  • Visão Geral do Hardware (0:30)
  • Instruções de Fiação (1:45)
  • Código de Demonstração (2:15)
  • Demonstração (3:00)
4-8x8 LED matrix using a MAX7219 Arduino module
Idioma: C++
/*
 * Este vídeo mostra como usar o módulo MAX7219 com uma matriz LED 8x8 para exibir texto ou qualquer caractere no LED.  
 * Assista ao vídeo no YouTube: https://youtu.be/AAiDwBKs9uE  
 * 
 * Escrito por Ahmad Shamshiri para Robojax.com  
 * em 26 de fevereiro de 2017 em Ajax, Ontário, Canadá  
 * Obtenha este código e outros códigos Arduino no Robojax.com  
 * Aprenda Arduino passo a passo em um curso estruturado com todos os materiais, diagramas de fiação e bibliotecas  
 * tudo em um só lugar.  
 * 
 * Tenha acesso antecipado aos meus vídeos via Patreon e tenha seu nome mencionado ao final de cada  
 * vídeo que publico no YouTube aqui: http://robojax.com/L/?id=63 (assista até o final deste vídeo para ver a lista dos meus Patrons)  
 * 
 * Ou faça uma doação usando PayPal http://robojax.com/L/?id=64  
 * 
 * Este código é "COMO ESTÁ" sem garantia ou responsabilidade. Livre para ser utilizado desde que você mantenha esta nota intacta.  
 * Este código foi baixado do Robojax.com  
 * Este programa é um software livre: você pode redistribuí-lo e/ou modificá-lo  
 * de acordo com os termos da Licença Pública Geral GNU conforme publicada pela  
 * Free Software Foundation, seja a versão 3 da Licença, ou  
 * (a sua escolha) qualquer versão posterior.  
 * 
 * Este programa é distribuído na esperança de que seja útil,  
 * mas SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de  
 * COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO. Veja a  
 * Licença Pública Geral GNU para mais detalhes.  
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU  
 * junto com este programa. Se não, veja <https://www.gnu.org/licenses/>.  
 * 
 * // Nós sempre temos que incluir a biblioteca  
 * // Baseado em um projeto postado https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Now we need a LedControl to work with.
 *   // Customized for RoboJax.com on February 26, 2017 in Ajax, Ontario, Canada.
 * **** These pin numbers will probably not work with your hardware *****
 *   pin 12 is connected to the DataIn 
 *   pin 11 is connected to the CLK 
 *   pin 10 is connected to CS
 *   We have only a single MAX72XX.
 */
 LedControl lc=LedControl(12,11,10,1);

/*
 * we always wait a bit between updates of the display */
 *  unsigned long delaytime=600;
 *  
 *  void setup() {
 *    /*
 *     The MAX72XX is in power-saving mode on startup,
 *     we have to do a wakeup call
 */
   lc.shutdown(0,false);
/*
 * Set the brightness to a medium value */
 *    lc.setIntensity(0,8);
 *    /* and clear the display
 */
   lc.clearDisplay(0);
 }

/*
 * This method will display the characters for the
 *   word "Arduino" one after the other on the matrix. 
 *   (you need at least 5x7 LEDs to see the whole characters)
 */
 void writeArduinoOnMatrix() {
/*
 * here is the data for the characters */
 *  
 *    // K
 *    byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *    byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *    byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *    byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *    byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *    byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *    byte love[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 *  
 *  
 *    /* Letter R
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,R[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter R ///////

/*
 * Letter O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// this is for blank
 *    }  
 *  //////////////// END of Letter O ///////
 *  
 *  
 *    /* Letter B
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,B[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter B ///////

/*
 * Letter O */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,O[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// this is for blank
 *    }  
 *  //////////////// END of Letter O ///////
 *  
 *    /* Letter J
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,J[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter J ///////

/*
 * Letter A */
 *    for (int i=0; i<8; i++){
 *    lc.setRow(0,i,A[i]);
 *  
 *    }
 *     
 *    delay(delaytime);
 *    for(int i=0; i<8; i++){
 *        lc.setRow(0,i,0);// this is for blank
 *    }  
 *  //////////////// END of Letter A ///////
 *  
 *    /* Letter X
 */
   for (int i=0; i<8; i++){
   lc.setRow(0,i,X[i]);

   }

   delay(delaytime);
   for(int i=0; i<8; i++){
       lc.setRow(0,i,0); // this is for blank
   }
 // ////////////// END of Letter X ///////



5-8x8 LED Matrix using a MAX7219 Arduino Module
Idioma: C++
/*
 * Este vídeo mostra como usar o módulo MAX7219 com uma matriz LED 8x8 para exibir texto ou qualquer caractere no LED.  
 * Assista ao vídeo no YouTube: https://youtu.be/AAiDwBKs9uE  
 * 
 * Escrito por Ahmad S. para Robojax.com  
 * em 26 de fevereiro de 2017 em Ajax, Ontário, Canadá  
 * Permissão concedida para compartilhar este código, desde que esta  
 * observação seja mantida com o código.  
 * Isenção de responsabilidade: Este código é "COMO ESTÁ" e é apenas para fins educacionais.  
 * 
 * /  
 * 
 * // Sempre precisamos incluir a biblioteca  
 * // Baseado em um projeto postado em https://github.com/wayoda/LedControl
 */
#include "LedControl.h"

/*
 * Now we need a LedControl object to work with.
 *  // Customized for RoboJax.com on February 26, 2017 in Ajax, Ontario, Canada.
 * **** These pin numbers will probably not work with your hardware *****
 *  pin 1 is connected to the DataIn 
 *  pin 4 is connected to the CLK 
 *  pin 53 is connected to CS
 *  We have only a single MAX72XX.
 */
LedControl lc=LedControl(1,4,53,1); // this line determines if this code can work with Arduino Mega or Arduino UNO

/*
 * we always wait a bit between updates of the display */
 * unsigned long delaytime=600;
 * 
 * void setup() {
 *   /*
 *    The MAX72XX is in power-saving mode on startup,
 *    we have to do a wakeup call
 */
  lc.shutdown(0,false);
/*
 * Set the brightness to a medium value */
 *   lc.setIntensity(0,8);
 *   /* and clear the display
 */
  lc.clearDisplay(0);
}

/*
 * This method will display the characters for the
 *  word "Arduino" one after the other on the matrix. 
 *  (you need at least 5x7 LEDs to see the whole characters)
 */
void writeArduinoOnMatrix() {
/*
 * here is the data for the characters */
 * 
 *   // K
 *   byte R[8]={B11111100,B10000100,B10000100,B11111000,B10100000,B10010000,B10001000,B10000100};
 *   byte O[8]={B00011000,B00100100,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000};  
 *   byte B[8]={B11111100,B10000100,B10000100,B11111000,B10001000,B10000100,B10000100,B11111100};
 *   byte J[8]={B00011110,B00000100,B00000100,B00000100,B10000100,B10000100,B01000100,B00111000};
 *   byte A[8]={B00111000,B01000100,B10000010,B11111110,B10000010,B10000010,B10000010,B10000010};     
 *   byte X[8]={ B10000001,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010,B10000001};
 *   byte love[8]={ B00000000,B01100110,B10011001,B10011001,B10000001,B01000010,B00100100,B00011000};  
 * 
 * 
 *   /* Letter R
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,R[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter R ///////

/*
 * Letter O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// this is for blank
 *   }  
 * /////////////// END of Letter O ///////
 * 
 * 
 *   /* Letter B
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,B[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter B ///////

/*
 * Letter O */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,O[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// this is for blank
 *   }  
 * /////////////// END of Letter O ///////
 * 
 *   /* Letter J
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,J[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter J ///////

/*
 * Letter A */
 *   for (int i=0; i<8; i++){
 *   lc.setRow(0,i,A[i]);
 * 
 *   }
 *    
 *   delay(delaytime);
 *   for(int i=0; i<8; i++){
 *       lc.setRow(0,i,0);// this is for blank
 *   }  
 * /////////////// END of Letter A ///////
 * 
 *   /* Letter X
 */
  for (int i=0; i<8; i++){
  lc.setRow(0,i,X[i]);

  }

  delay(delaytime);
  for(int i=0; i<8; i++){
      lc.setRow(0,i,0); // this is for blank
  }
 // ///////////// END of Letter X ///////



Arquivos📁

Nenhum arquivo disponível.