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...
Comentar
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...
Alexandre não tenho Facebook (não gosto).
obrigado pelo Link. Já o conhecia.
José, olha o que eu achei:
http://www.best-microcontroller-projects.com/max7219.html
Obrigado.
Tem Facebook, José ?
Se inscreve lá no Grupo. Está lá na descrição o vídeo o endereço.
Abraços
Muito legal !
Olha meu circuito aí:
https://www.youtube.com/watch?v=axHdU9Qu6Zk
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.
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.
Queria arrumar um código que fizesse umas animações naquilo que é escrito.
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 !
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)