- Descrição: O Sensor de Corrente (AC e DC) ACS712 possibilita realizar…
Como usar com Arduino – Módulo Matriz De LED 8×8 com MAX7219
– Descrição:
O Módulo Matriz De LED 8×8 com MAX7219 é ideal para projetos que envolva efeitos visuais. São 64 LEDs 3mm divididos em 8 linhas e 8 colunas.
O grande diferencial do Módulo Matriz De LED 8×8 com MAX7219 está no circuito integrado MAX7219, que tem como função acionar displays de LED. Com o circuito integrado MAX7219 é possível fazer o controle de uma matriz de LED 8×8, onde a entrada dos dados ocorre de forma serial e o que acaba por economizar uma boa quantidade de pinos da plataforma microcontrolada. Ao utilizar o circuito integrado MAX7219 serão necessários apenas 3 pinos de comunicação.
Em projetos de painéis de LEDs o Módulo Matriz De LED 8×8 com MAX7219 é aplicado com grande facilidade, pois é possível ligar vários módulos em forma de cascata.
– Especificações e características:
– Controlador: MAX7219
– Tensão de operação: 5VDC
– Quantidade de LEDs: 64 (8 linhas por 8 colunas)
– Diâmetro dos LEDs: 3mm
– Cor dos LEDs: vermelho
– Datasheet:
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário fazer exibição de textos ou figuras através de uma matriz de LED.
– Proposta da prática:
Utilizar o Módulo Matriz De LED 8×8 com MAX7219 em conjunto com o Arduino para exibir as frases:
A MasterWalker Shop se preocupa com o seu aprendizado!
www.masterwalkershop.com.br
blogmasterwalkershop.com.br
– Lista dos itens necessários:
01 – Arduino com Cabo USB
01 – Módulo Matriz De LED 8×8 com MAX7219
05 – Cabos Jumper macho-fêmea
– Esquema de ligação da prática:
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Biblioteca:
– Importando bibliotecas para o ambiente de programação do Arduino:
Arduino – Importando bibliotecas para a IDE
– Código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
#include <MaxMatrix.h> //INCLUSÃO DE BIBLIOTECA #include <avr/pgmspace.h> //INCLUSÃO DE BIBLIOTECA //CRIA UM ARRAY COM AS REPRESENTAÇÕES DOS CARACTERES E DAS LETRAS PROGMEM unsigned char const CH[] = { 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // espaço 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // ! 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // " 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // # 4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $ 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // % 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // & 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // ' 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // ( 3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // ) 5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // * 5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // + 2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // , 4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // - 2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // . 4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // / 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0 3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1 4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2 4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3 4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4 4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5 4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6 4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7 4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8 4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9 2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // : 2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ; 3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // < 3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // = 3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // > 4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ? 5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @ 4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A 4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B 4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C 4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D 4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E 4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F 4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G 4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H 3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I 4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J 4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K 4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L 5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M 5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O 4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P 4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q 4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R 4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S 5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T 4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U 5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V 5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W 5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X 5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y 4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z 2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [ 4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ 2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ] 3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // ^ 4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _ 2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // ` 4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a 4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b 4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c 4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d 4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e 3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f 4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g 4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h 3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i 4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j 4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k 3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l 5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m 4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n 4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o 4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p 4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q 4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r 4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s 3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t 4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u 5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v 5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w 5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x 4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y 3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z 3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // { 1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // | 3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // } 4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~ }; int data = 8; //PINO DIGITAL CONECTADO AO TERMINAL DIN DO MÓDULO int load = 9; //PINO DIGITAL CONECTADO AO TERMINAL CS DO MÓDULO int clock = 10; //PINO DIGITAL CONECTADO AO TERMINAL CLK DO MÓDULO int maxInUse = 1; //DEFINE A QUANTIDADE DE MÓDULOS EM USO MaxMatrix m(data, load, clock, maxInUse); //INICIA A INSTÂNCIA DO MÓDULO E PASSA OS PARÂMETROS byte buffer[500]; //FRASES QUE SERÃO IMPRESSAS NA MATRIZ char string1[] = " A MasterWalker Shop se preocupa com o seu aprendizado! "; char string2[] = " www.masterwalkershop.com.br "; char string3[] = " blogmasterwalkershop.com.br "; void setup(){ m.init(); //INICIA O MÓDULO m.setIntensity(15); //DEFINE O BRILHO DA MATRIZ QUE VARIA DE 0 A 15 } void loop(){ printStringWithShift(string1, 80); //IMPRIME NA MATRIZ A FRASE ARMAZENADA NA string1, COM VELOCIDADE DE 80ms printStringWithShift(string2, 80); //IMPRIME NA MATRIZ A FRASE ARMAZENADA NA string2, COM VELOCIDADE DE 80ms printStringWithShift(string3, 80); //IMPRIME NA MATRIZ A FRASE ARMAZENADA NA string3, COM VELOCIDADE DE 80ms } //MÉTODO RESPONSÁVEL POR IDENTIFICAR O CARACTERE / LETRA E IMPRIMIR A SEQUÊNCIA CORRESPONDENTE DO ARRAY void printCharWithShift(char c, int shift_speed){ if (c < 32) return; c -= 32; memcpy_P(buffer, CH + 7*c, 7); m.writeSprite(32, 0, buffer); m.setColumn(32 + buffer[0], 0); for (int i=0; i<buffer[0]+1; i++) { delay(shift_speed); m.shiftLeft(false, false); } } //MÉTODO RESPONSÁVEL PELA DESLOCAÇÃO DAS INFORMAÇÕES NA MATRIZ void printStringWithShift(char* s, int shift_speed){ while (*s != 0){ printCharWithShift(*s, shift_speed); s++; } } |
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Como usar com Arduino – Display LCD 16X2 Shield com Teclado
Próxima postagem: Comunicando o Shield WiFi ESP8266 com o Arduino através da Serial Nativa
ola
otimo post, consegui ligar três em cascata e funcionou perfeitamente.
minha duvida é como faço pra liga-las uma sobre a outra pra montar um painel maior
valeu
Por favor eu gostaria que me esplicasse qual é a função de cada pino do arduino que foi ligado com a matriz
Ex: o GND do arduino liga com o GND da matriz para que função
Olá Pércles.
Agradeço pelo comentário!
Para isso, basta ler o datasheet, pois nele há informações sobre a pinagem do CI MAX7219 e lá você pode obter as respostas com clareza.
oi, pode me ajudar, o código funcionou no meu arduino, porem a menssagem fica invertida, como se tivesse rotacionada , como faço para mudar isso?
Olá Eular, ótimo seu post e o código. Tive uma só dificuldade, consegui conectar 4 matrizes dessas funcionando legal.
Na linha “int maxInUse = 1; //DEFINE O INICIO DE IMPRESSÃO DA MATRIZ” acredito que o comentário deveria ser: “// DEFINE A QUANTIDADE DE MÓDULOS EM USO”, pois foi assim que essa variável se portou para mim.
Só que não consegui anexar mais módulos (queria usar 8). Até o quarto deu beleza, do quinto em diante não deu certo. Você sabe se tem como adaptar isso? Ou conhece outra biblioteca similar.
As demais que achei “printam” em outra posição. Só essa imprime na (horizontal/vertical) que me interessa. Obrigado.
Olá Teófilo.
Agradeço pelo comentário!
Já fiz a alteração do comentário no código. Muito obrigado!
Quanto a sua dúvida: possivelmente a limitação da quantidade de módulos está definida na biblioteca MAXMATRIX. Baixe o Notepad++ e analise os arquivos de código da biblioteca e veja se há como alterar para o uso com uma quantidade maior de módulos.
Infelizmente não conheço outra biblioteca que possa se adaptar ao que precisa.
Vlw!
NÃO FUNCIONOU NA MINHA MATRIZ DE 4 BLOCO DE 8X8 1088AS
COMO FAÇO PARA COLOCAR EFEITO NA MINHA MATRIZ
Olá Geraldo.
Esta postagem em específico é para o Módulo Matriz de LED 8×8 com MAX7219 e não para a matriz comum.
Recomendo que pesquise por exemplo de códigos com base no modelo da matriz que possui.
Amigo Geraldo, eu não estava conseguindo, eu tenho esta mesma sua, acredite o problema da minha era que um dos pinos do arduino não estava saindo 5v, troquei o arduino e funcionou, coloca os pinos 10,11,13 e HIGH e testa com multímetro ou com um led, provavelmente seja esse seu problema.