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 José Gustavo Abreu Murta em 25 julho 2017 às 12:36

Gravei o vídeo com a minha camera FUJI HS10 com 1000 frames por segundo

Veja o vídeo  no Youtube e selecione velocidade lenta para ver o quanto os leds ficam apagados. 

Devido à persistência dos nossos olhos, isso não dá para ver.

Comentário de José Gustavo Abreu Murta em 25 julho 2017 às 11:11

OBS importante :

Não recomendo o uso do Regulador de 5V do Arduino para alimentar os displays. 

Se todos leds do MAX7219 estiverem acesos, o consumo de corrente é  de 311 mA ! 

Use uma fonte externa de 5V ( de 1A a 2A) .

Comentário de José Gustavo Abreu Murta em 25 julho 2017 às 11:05

Testei hoje e esta tudo OK ! 

Arduino Nano - IDE 1.8.3 

Biblioteca Maxmatriz :

https://code.google.com/archive/p/arudino-maxmatrix-library/downloads

Instale a biblioteca - incuir arquivo zip e depois reinicialize a IDE (senão não funciona). 

Vcc – Tensão 5V 

GND – Aterramento

Din – Entrada Digital (MOSI) - Arduino D11

CS – Chip Select (SS) - Arduino D10

CLK – Clock - SCK - Arduino D13 

Obrigado Lab !

Comentário de Alexandre Costa em 20 junho 2017 às 22:48

Senhores, peço SOCORRO! :-)
A biblioteca "MaxMatrix" NÃO FUNCIONA na IDE nova do Arduino (1.6.5) - nem, tão nova é.

O programa nem compila, já dá erro de cara. Quando rodo O MESMO programa na IDE 1.0.5 ou 1.0.6, tudo funciona, compila, grava e roda legal.
Alguém sabe porque e como resolver ??

Comentário de Dener Lopes Milani em 20 fevereiro 2017 às 7:38

Bom dia amigos, montei esse projeto com 4 módulos, alterei a quantidade de módulos no programa porém o sistema esta funcionando ao contrario em vez de deslocar para a esquerda ele desloca para a direita.

Alguém poderia me dar uma dica...

Valeu.

Comentário de J. Eduard Dickel em 15 dezembro 2015 às 22:59

Essas matrizes são muito massa! Usei um par delas como olhos em um robô para fazer algumas expressões (veja: https://www.youtube.com/watch?v=6P0FF4LY1e4). Pretendo usá-las novamente em um projeto que estou planejando, mas desta vez seis delas.

Comentário de diogo ferreira moura em 11 dezembro 2015 às 7:43

Bom dia,

Excelente esta postagem parabéns, bastante didático. Você conhece um modelo para que estas mensagens venham de um banco de dados de modo temporizado?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço