Neste tutorial, vamos projetar um display de rolagem de matriz de LED 8x8 usando Arduino Uno, que mostrará alfabetos de rolagem.
8x8 LED Matrix contém 64 LEDs (Light Emitting Diodes) que são organizados na forma de uma matriz, daí o nome é matriz de LED. Vamos fazer essa Matrix soldando esses 64 LEDs na perfboard ou no DOT PCB. Os LEDs podem ser de qualquer cor, escolha os que estão à sua disposição. Em seguida, escreveremos um programa para o Arduino para controlar a matriz de 64 LEDs. O UNO, de acordo com o programa, alimenta LEDs apropriados para mostrar os caracteres em rolagem.
Componentes necessários:
- Arduino Uno
- 64 LEDs
- Perfboard com outras ferramentas de solda
- Resistor de 1KΩ (8 peças)
- Fonte de alimentação (5v)
Circuito e explicação de funcionamento:
Existem 64 LEDs dispostos em forma de matriz. Portanto, temos 8 colunas e 8 linhas. Sobre essas linhas e colunas, todos os terminais positivos em uma linha são reunidos. Para cada linha, há um Terminal Positivo Comum para todos os 8 LEDs dessa linha. É mostrado na figura abaixo,
Portanto, para 8 linhas, temos 8 terminais positivos comuns. Considere a primeira linha, como visto na figura, 8 LEDs de D57 a D64 têm um terminal positivo comum e são denotados por 'POSITIVO0'. Agora, se quisermos acender um ou todos os LEDs na primeira LINHA da matriz, devemos alimentar o PIN0 do LED Matrix. Da mesma forma, se quisermos acender qualquer LED (ou todos) em qualquer linha, precisamos alimentar o pino terminal positivo comum correspondente dessa linha respectiva.
Isso ainda não acabou e apenas deixar as LINHAS DE MATRIZ com suprimento positivo não vai render nada. Precisamos aterrar os negativos de LEDs para acendê-los. Portanto, na matriz de 8x8 LEDs, todos os terminais negativos dos LEDs em qualquer coluna são reunidos para formar oito terminais negativos comuns, como todos os terminais negativos da primeira coluna são conectados juntos ao PIN-A1 (NEGATIVO7). Isso é mostrado na figura abaixo:
Deve-se prestar atenção a esses pinos ao soldar os LEDs no Perfboard.
Agora, se precisarmos aterrar algum LED da primeira coluna, aterraremos o PIN-A1 (NEGATIVO7) da MATRIX, e ele aterrará todos os LEDs da primeira coluna. O mesmo processo vale para todas as outras sete colunas negativas comuns.
Desde agora você sabe como o positivo comum e o negativo comum funcionam. Vamos colocá-los juntos para ver como eles funcionam juntos e o display final do circuito para rolagem 8x8 LED Matrix ficará assim:
Condução de matriz de LED 8x8 usando multiplexação:
Agora, digamos que queremos LIGAR o LED57, então precisamos ligar o PIN0 do UNO e aterrar o PIN-8 do UNO. Agora, para ligar o LED57 e o LED50, precisamos ligar o PIN0, PIN1 e aterrar o PIN8, PIN9. Mas fazer isso não apenas ligará D57, D50, mas também D49, D58. Para evitar isso, usamos uma técnica chamada Multiplexing. Já discutimos essa técnica multiplex em matriz de LED 8x8 em detalhes; leia esse artigo para obter uma explicação detalhada. Aqui estamos explicando brevemente a Multiplexação.
O olho humano não pode capturar uma frequência superior a 30 Hz. Isso se um LED acender e apagar continuamente a uma taxa de 30 Hz ou mais. O olho vê o LED continuamente LIGADO. No entanto, este não é o caso e o LED ficará realmente LIGADO e DESLIGADO constantemente. Essa técnica é chamada de Multiplexação.
Digamos, por exemplo, que queremos ligar apenas LED57 e LED50 sem ligar D49 e D58. O truque é, primeiro forneceremos energia para a primeira linha para LIGAR o LED57 e esperar 1mSEC, e então o desligaremos. Em seguida, forneceremos energia para a segunda linha para ligar o LED50 e esperar 1mSEC e então desligá-lo. O ciclo continua com alta frequência e o LED57 e o LED50 ligam e desligam rapidamente e ambos os LEDs parecem estar continuamente LIGADOS aos nossos olhos. Significa que fornecemos energia apenas para uma linha de cada vez, eliminando as chances de ligar outros LEDs nas outras linhas. Usaremos essa técnica para mostrar todos os personagens.
Existe também uma biblioteca chamada LedControlMS.h para cuidar de toda essa complexidade da multiplexação, onde você só precisa inserir o caractere ou número que deseja imprimir na matriz de LED, verifique esta matriz de LED Arduino com projeto MAX7219 para mais detalhes.
Explicação de programação:
Em nosso código, escrevemos o valor decimal para cada caractere e programamos esses valores no Arduino. O programa escreveu para deslocar esses valores para a próxima linha a cada 0,2 segundos, isso será visto como uma rolagem de caracteres para cima, é muito simples.
Para alterar os caracteres a serem exibidos, basta substituir o valor no array char ALPHA de acordo com os valores dos caracteres fornecidos abaixo, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12.108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Por exemplo, se você quiser exibir DAD na matriz de LED, primeiro substitua os valores de caracteres na matriz char ALPHA , colocando valores para os caracteres D, A e D da lista acima:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
Os valores totais agora são 5 * 10 = 50 valores, então
Substitua, por (int x = 0; x <142; x ++) // 150-8 (para parar o estouro) {…….. Por, por (int x = 0; x <42; x ++) // 50-8 (para parar o estouro) {……..
Então você só precisa mudar o número.
Com isso você fez a programação e agora pode rolar qualquer texto no LED Matrix 8x8, verifique o código completo abaixo com um vídeo de demonstração.