Tutorial para usar o módulo de Matriz de LED 8x8 MAX7219

Olá garagistas,

 

O LED Driver MAX7219 possibilita controlar até 64 LEDs usando apenas 5 fios para se comunicar com um microcontrolador, além de poder ser usado em série com outros MAX7219 para aumentar as saídas.

O módulo possui comunicação SPI, fazendo com que seja facilmente conectado a um microcontrolador. As conexões são:

Vcc – Tensão

GND – Aterramento

Din – Entrada Digital (MOSI)

CS – Chip Select

CLK – Clock

 

Neste tutorial ensinaremos a ligar dois módulos em série e fazer letreiros.

Materiais Utilizados

1x Arduino

2x Módulos Matriz de LED 8x8 MAX7219

Jumpers

As ligações são bem simples, conecte as saídas digitais 13, 11 e 10 do Arduino nas entradas do primeiro módulo CLK, Din e CS, respectivamente. E então conecte as saídas do primeiro módulo nas entradas do segundo módulo, como mostrado no esquemático.

Usando a IDE do Arduino escreva o código abaixo

// maxmatrix-disp-scroll-text-7219

// based on // https://code.google.com/p/arudino-maxmatrix-library/wiki/Example_Di...

#include <MaxMatrix.h> #include <avr/pgmspace.h>

#define maxDisplays 2 // Number of MAX7219's in use.

 

byte Buf7219[7]; // "width,height,data[5]" single character buffer.

const int data  = 11;     // DIN or MOSI

const int load  = 10;     // CS

const int clock = 13;     // SCK    

 

MaxMatrix m(data, load, clock, maxDisplays);

// Data array is stored in program memory (see memcpy_P for access).

// Parameters are width, height, character data... // There is a speed improvement for characters with height 8 bits see lib.

PROGMEM const unsigned char CH[] =

{

  3, 8, B0000000, B0000000, B0000000, B0000000, B0000000, // space

  1, 8, B1011111, B0000000, B0000000, B0000000, B0000000, // !

  3, 8, B0000011, B0000000, B0000011, B0000000, B0000000, // "

  5, 8, B0010100, B0111110, B0010100, B0111110, B0010100, // #

  4, 8, B0100100, B1101010, B0101011, B0010010, B0000000, // $

  5, 8, B1100011, B0010011, B0001000, B1100100, B1100011, // %

  5, 8, B0110110, B1001001, B1010110, B0100000, B1010000, // &

  1, 8, B0000011, B0000000, B0000000, B0000000, B0000000, // '

  3, 8, B0011100, B0100010, B1000001, B0000000, B0000000, // (

  3, 8, B1000001, B0100010, B0011100, B0000000, B0000000, // )

  5, 8, B0101000, B0011000, B0001110, B0011000, B0101000, // *

  5, 8, B0001000, B0001000, B0111110, B0001000, B0001000, // +

  2, 8, B10110000, B1110000, B0000000, B0000000, B0000000, // ,

  4, 8, B0001000, B0001000, B0001000, B0001000, B0000000, // -

  2, 8, B1100000, B1100000, B0000000, B0000000, B0000000, // .

  4, 8, B1100000, B0011000, B0000110, B0000001, B0000000, // /

  4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // 0

  3, 8, B1000010, B1111111, B1000000, B0000000, B0000000, // 1

  4, 8, B1100010, B1010001, B1001001, B1000110, B0000000, // 2

  4, 8, B0100010, B1000001, B1001001, B0110110, B0000000, // 3

  4, 8, B0011000, B0010100, B0010010, B1111111, B0000000, // 4

  4, 8, B0100111, B1000101, B1000101, B0111001, B0000000, // 5

  4, 8, B0111110, B1001001, B1001001, B0110000, B0000000, // 6

  4, 8, B1100001, B0010001, B0001001, B0000111, B0000000, // 7

  4, 8, B0110110, B1001001, B1001001, B0110110, B0000000, // 8

  4, 8, B0000110, B1001001, B1001001, B0111110, B0000000, // 9

  2, 8, B01010000, B0000000, B0000000, B0000000, B0000000, // :

  2, 8, B10000000, B01010000, B0000000, B0000000, B0000000, // ;

  3, 8, B0010000, B0101000, B1000100, B0000000, B0000000, // /p>

  3, 8, B0010100, B0010100, B0010100, B0000000, B0000000, // =

  3, 8, B1000100, B0101000, B0010000, B0000000, B0000000, // >

  4, 8, B0000010, B1011001, B0001001, B0000110, B0000000, // ?

  5, 8, B0111110, B1001001, B1010101, B1011101, B0001110, // @

  4, 8, B1111110, B0010001, B0010001, B1111110, B0000000, // A

  4, 8, B1111111, B1001001, B1001001, B0110110, B0000000, // B

  4, 8, B0111110, B1000001, B1000001, B0100010, B0000000, // C

  4, 8, B1111111, B1000001, B1000001, B0111110, B0000000, // D

  4, 8, B1111111, B1001001, B1001001, B1000001, B0000000, // E

  4, 8, B1111111, B0001001, B0001001, B0000001, B0000000, // F

  4, 8, B0111110, B1000001, B1001001, B1111010, B0000000, // G

  4, 8, B1111111, B0001000, B0001000, B1111111, B0000000, // H

  3, 8, B1000001, B1111111, B1000001, B0000000, B0000000, // I

  4, 8, B0110000, B1000000, B1000001, B0111111, B0000000, // J

  4, 8, B1111111, B0001000, B0010100, B1100011, B0000000, // K

  4, 8, B1111111, B1000000, B1000000, B1000000, B0000000, // L

  5, 8, B1111111, B0000010, B0001100, B0000010, B1111111, // M

  5, 8, B1111111, B0000100, B0001000, B0010000, B1111111, // N

  4, 8, B0111110, B1000001, B1000001, B0111110, B0000000, // O

  4, 8, B1111111, B0001001, B0001001, B0000110, B0000000, // P

  4, 8, B0111110, B1000001, B1000001, B10111110, B0000000, // Q

  4, 8, B1111111, B0001001, B0001001, B1110110, B0000000, // R

  4, 8, B1000110, B1001001, B1001001, B0110010, B0000000, // S

  5, 8, B0000001, B0000001, B1111111, B0000001, B0000001, // T

  4, 8, B0111111, B1000000, B1000000, B0111111, B0000000, // U

  5, 8, B0001111, B0110000, B1000000, B0110000, B0001111, // V

  5, 8, B0111111, B1000000, B0111000, B1000000, B0111111, // W

  5, 8, B1100011, B0010100, B0001000, B0010100, B1100011, // X

  5, 8, B0000111, B0001000, B1110000, B0001000, B0000111, // Y

  4, 8, B1100001, B1010001, B1001001, B1000111, B0000000, // Z

  2, 8, B1111111, B1000001, B0000000, B0000000, B0000000, // [

  4, 8, B0000001, B0000110, B0011000, B1100000, B0000000, // backslash

  2, 8, B1000001, B1111111, B0000000, B0000000, B0000000, // ]

  3, 8, B0000010, B0000001, B0000010, B0000000, B0000000, // hat

  4, 8, B1000000, B1000000, B1000000, B1000000, B0000000, // _

  2, 8, B0000001, B0000010, B0000000, B0000000, B0000000, // `

  4, 8, B0100000, B1010100, B1010100, B1111000, B0000000, // a

  4, 8, B1111111, B1000100, B1000100, B0111000, B0000000, // b

  4, 8, B0111000, B1000100, B1000100, B0000000, B0000000, // c // JFM MOD.

  4, 8, B0111000, B1000100, B1000100, B1111111, B0000000, // d

  4, 8, B0111000, B1010100, B1010100, B0011000, B0000000, // e

  3, 8, B0000100, B1111110, B0000101, B0000000, B0000000, // f

  4, 8, B10011000, B10100100, B10100100, B01111000, B0000000, // g

  4, 8, B1111111, B0000100, B0000100, B1111000, B0000000, // h

  3, 8, B1000100, B1111101, B1000000, B0000000, B0000000, // i

  4, 8, B1000000, B10000000, B10000100, B1111101, B0000000, // j

  4, 8, B1111111, B0010000, B0101000, B1000100, B0000000, // k

  3, 8, B1000001, B1111111, B1000000, B0000000, B0000000, // l

  5, 8, B1111100, B0000100, B1111100, B0000100, B1111000, // m

  4, 8, B1111100, B0000100, B0000100, B1111000, B0000000, // n

  4, 8, B0111000, B1000100, B1000100, B0111000, B0000000, // o

  4, 8, B11111100, B0100100, B0100100, B0011000, B0000000, // p

  4, 8, B0011000, B0100100, B0100100, B11111100, B0000000, // q

  4, 8, B1111100, B0001000, B0000100, B0000100, B0000000, // r

  4, 8, B1001000, B1010100, B1010100, B0100100, B0000000, // s

  3, 8, B0000100, B0111111, B1000100, B0000000, B0000000, // t

  4, 8, B0111100, B1000000, B1000000, B1111100, B0000000, // u

  5, 8, B0011100, B0100000, B1000000, B0100000, B0011100, // v

  5, 8, B0111100, B1000000, B0111100, B1000000, B0111100, // w

  5, 8, B1000100, B0101000, B0010000, B0101000, B1000100, // x

  4, 8, B10011100, B10100000, B10100000, B1111100, B0000000, // y

  3, 8, B1100100, B1010100, B1001100, B0000000, B0000000, // z

  3, 8, B0001000, B0110110, B1000001, B0000000, B0000000, //   {

  1, 8, B1111111, B0000000, B0000000, B0000000, B0000000, // |

  3, 8, B1000001, B0110110, B0001000, B0000000, B0000000, // }

  4, 8, B0001000, B0000100, B0001000, B0000100, B0000000, // ~

};

   

void setup()

{  

  m.init();  

  m.setIntensity(3);

} // Scrolling Text

 

char string[] = "Laboratorio de Garagem  ";  

 

void loop()

{   

  delay(100);

  m.shiftLeft(false, true);

  printStringWithShift(string,200

  );

}

 

void printCharWithShift(char c, int shift_speed)

{  

  if (c < 32) return;  

  c -= 32; 

  memcpy_P(Buf7219, CH + 7*c, 7);

  m.writeSprite(maxDisplays*8, 0, Buf7219); 

  m.setColumn(maxDisplays*8 + Buf7219[0], 0);     

 

  for (int i=0; i<=Buf7219[0]; i++)   

  {    

    delay(shift_speed);   

    m.shiftLeft(false, false);

  }

 

}

 

void printStringWithShift(char* s, int shift_speed)

{

  while (*s != 0)  

  {    

    printCharWithShift(*s, shift_speed);

    s++; 

  }

}

Carregue o código no Arduino e será possível ver a mensagem “Laboratorio de Garagem” passando nas matrizes de LED.

Pode-se alterar a mensagem apenas colocando uma frase diferente no char String[]. Esperamos ter ajudados na utilização das matrizes e boa diversão em sua utilização, caso tenha alguma dúvida poste em nosso blog.

 

Referências:

http://www.best-microcontroller-projects.com/max7219.html#Arduino_S...

http://pdf1.alldatasheet.com/datasheet-pdf/view/73745/MAXIM/MAX7219...

 

Exibições: 10641

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Ozéias Ferreira da Silva Rosa em 1 setembro 2017 às 17:24

Nobres Senhores, uma pergunta? Nesse mesmo projeto de rolagem, como faria para haver o mesmo efeito mas de forma vertical? Por exemplo em vez das matrizes uma do lado da outra elas ficarem vertical... como fazer elas rolarem de baixo pra cima...? Desde já obrigado...

Comentário de José Gustavo Abreu Murta em 27 julho 2017 às 12:06

Alexandre não tenho Facebook (não gosto). 
obrigado pelo Link. Já o conhecia.

Comentário de Alexandre Costa em 26 julho 2017 às 22:50
Comentário de Alexandre Costa em 26 julho 2017 às 20:44

Obrigado.

Tem Facebook, José ?

Se inscreve lá no Grupo. Está lá na descrição o vídeo o endereço.

Abraços

Comentário de José Gustavo Abreu Murta em 26 julho 2017 às 19:00

Muito legal !

Comentário de Alexandre Costa em 26 julho 2017 às 17:56
Comentário de Alexandre Costa em 26 julho 2017 às 17:39

Obrigado mais uma vez, José.

Baixei lá a MD_MAX... library e os exemplos, mas nenhum deles funcionou aqui. :-(
Vou ver o que houve de errado.

Comentário de José Gustavo Abreu Murta em 26 julho 2017 às 14:44

Boa tarde Alexandre, esse display possui várias bibliotecas na IDE do Arduino.

Abra a IDE do Arduino. 

Clique em SKETCH , Incluir Biblioteca e Geranciar Bibliotecas. 

Abrirá uma janela com várias Bibbliotecas. 

Clique em Pesquisar (refine sua buca) e difite MAX7219.

Instale as Bibliotecas. 

Reincialize a IDE, para que as bibliotecas possam funcionar. 

Clique em ARQUIVO, EXEMPLOS e selecione uma das Bibliotecas do MAX7219. 

Comentário de Alexandre Costa em 25 julho 2017 às 20:23

Queria arrumar um código que fizesse umas animações naquilo que é escrito.

Comentário de Alexandre Costa em 25 julho 2017 às 20:06

Beleza, José. Agora funcionou. Era algum erro, mas parou.

Estou usando 4 módulos MAX direto no Arduino direto, mas é só para testes, não fica muito tempo ligado.

Valeu !

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço