- Componentes necessários:
- Módulo de matriz de LED 8x8:
- Explicação do circuito:
- Explicação de trabalho:
Criamos uma série de tutoriais do Raspberry Pi, nos quais cobrimos a interface do Raspberry Pi com todos os componentes básicos como LED, LCD, botão, motor DC, servo motor, motor de passo, ADC, registro de deslocamento, etc. publicou alguns projetos simples do Raspberry Pi para iniciantes, junto com alguns bons projetos de IoT. Hoje, na continuação destes tutoriais, iremos Controlar o Módulo de Matriz LED 8x8 da Raspberry Pi. Vamos escrever um programa python para mostrar caracteres no módulo de matriz.
Verifique também a interface 8x8 LED Matrix com Arduino e LED Matrix com AVR Microcontorller.
Componentes necessários:
Aqui, estamos usando o Raspberry Pi 2 Model B com o Raspbian Jessie OS. Todos os requisitos básicos de hardware e software foram discutidos anteriormente. Você pode consultá-los na introdução do Raspberry Pi e no LED Raspberry PI piscando para começar, exceto pelo que precisamos:
- Raspberry Pi Board
- Fonte de alimentação (5v)
- Capacitor 1000uF (conectado à fonte de alimentação)
- Resistor de 1KΩ (8 peças)
Módulo de matriz de LED 8x8:
Um módulo de matriz de 8 * 8 LED contém 64 LED (diodos emissores de luz) que são organizados na forma de uma matriz, portanto, o nome é matriz de LED. Esses módulos compactos estão disponíveis em diferentes tamanhos e cores. Pode-se escolher por conveniência. A configuração do PIN do módulo é mostrada na imagem. Lembre-se de que as pinagens do módulo não estão em ordem, então os PINs devem ser numerados exatamente como mostrado na figura para evitar erros.
Existem 8 + 8 = 16 terminais comuns no módulo LED Matrix. Sobre eles, temos 8 terminais positivos comuns e 8 terminais negativos comuns, na forma de 8 linhas e 8 colunas, para conexão de 64 LED em forma de matriz. Se o módulo fosse desenhado na forma de diagrama de circuito, teríamos uma imagem conforme mostrado abaixo:
Portanto, para 8 linhas, temos 8 terminais positivos comuns (9, 14, 8, 12, 17, 2, 5). Considere a primeira linha, os LEDs de D1 a D8 têm um terminal positivo comum e o pino é colocado no PIN9 do módulo LED Matrix. Quando queremos que um ou todos os LEDs em uma LINHA estejam LIGADOS, o pino correspondente do MÓDULO LED deve ser alimentado com + 3.3v.
Semelhante aos terminais positivos comuns, temos 8 terminais negativos comuns como colunas (13, 3, 4, 10, 6, 11, 15, 16). Para aterrar qualquer LED em qualquer coluna, o respectivo terminal negativo comum deve ser aterrado.
Explicação do circuito:
As conexões que são feitas entre o Raspberry Pi e o módulo de matriz de LED são mostradas na tabela abaixo.
Pino do módulo de matriz de LED no. |
Função |
Raspberry Pi GPIO Pin No. |
13 |
POSITIVO 0 |
GPIO12 |
3 |
POSITIVO1 |
GPIO22 |
4 |
POSITIVO 2 |
GPIO27 |
10 |
POSITIVO 3 |
GPIO25 |
6 |
POSITIVO 4 |
GPIO17 |
11 |
POSITIVE5 |
GPIO24 |
15 |
POSITIVO 6 |
GPIO23 |
16 |
POSITIVO 7 |
GPIO18 |
9 |
NEGATIVO 0 |
GPIO21 |
14 |
NEGATIVO1 |
GPIO20 |
8 |
NEGATIVO 2 |
GPIO26 |
12 |
NEGATIVO 3 |
GPIO16 |
1 |
NEGATIVO 4 |
GPIO19 |
7 |
NEGATIVE5 |
GPIO13 |
2 |
NEGATIVO 6 |
GPIO6 |
5 |
NEGATIVO 7 |
GPIO5 |
Aqui está o diagrama de circuito final para fazer a interface da matriz LED 8x8 com Raspberry Pi:
Explicação de trabalho:
Aqui, usaremos a técnica de multiplexação para mostrar os personagens no módulo de matriz de LED 8x8. Então, vamos discutir sobre essa multiplexação em detalhes. Digamos que se desejamos acender o LED D10 na matriz, precisamos alimentar o PIN14 do módulo e aterrar o PIN3 do módulo. Com este LED, o D10 acenderá conforme mostrado na figura abaixo. Isso também deve ser verificado primeiro para que o MATRIX saiba que tudo está em ordem.
Agora, digamos que se desejamos ligar D1, precisamos ligar o PIN9 da matriz e aterrar o PIN13. Com isso o LED D1 acenderá. A direção da corrente neste caso é mostrada na figura abaixo.
Agora, para a parte complicada, considere que queremos ligar D1 e D10 ao mesmo tempo. Portanto, devemos alimentar o PIN9, PIN14 e aterrar o PIN13, PIN3. Isso acenderá os LEDs D1 e D10, mas junto com isso também acenderá os LEDs D2 e D9. É porque eles compartilham terminais comuns. Portanto, se quisermos ligar os LEDs ao longo da diagonal, seremos forçados a ligar todos os LEDs ao longo do caminho. Isso é mostrado na figura abaixo:
Para evitar esse problema, usamos uma técnica chamada Multiplexação. Também discutimos esta técnica de multiplexação durante a interface da matriz de LED 8x8 com AVR, aqui estamos explicando novamente. Esta mesma técnica de multiplexação também é usada em Scrolling Text em 8x8 LED matrix com Arduino e com microcontrolador AVR.
O olho humano não consegue captar 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 o LED D1 e o LED D10 sem ligar o D2 e o D9. O truque é, primeiro forneceremos energia apenas para o LED D1 usando os PINOS 9 e 13 e esperaremos 1mSEC, e então o desligaremos. Em seguida, forneceremos energia ao LED D10 usando os PINOS 14 e 3 e esperaremos 1mSEC e então o desligamos. O ciclo continua continuamente com alta frequência e D1 e D10 ligam e desligam rapidamente e ambos os LEDs parecem estar continuamente LIGADOS aos nossos olhos. Significa que estamos fornecendo energia apenas para uma linha (LED) de cada vez, eliminando as chances de ligar outros LEDs em outras linhas. Usaremos essa técnica para mostrar todos os personagens.
Podemos entender melhor por um exemplo, como se quisermos exibir “A” na matriz, como mostrado abaixo:
Como dito, vamos LIGAR uma linha em um instante, Em t = 0m SEC, PIN09 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 1m SEG, o PIN14 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 são aterrados (outros pinos COLUMN estão ALTOS neste momento)
Em t = 2m SEC, PIN08 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 3m SEC, o PIN12 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 4m SEC, PIN01 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 5m SEC, PIN07 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 são aterrados (outros pinos de COLUNA estão ALTOS neste momento)
Em t = 6m SEC, PIN02 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 7m SEC, o PIN05 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Nessa velocidade, o display será visto como exibindo continuamente o caractere “A”, conforme mostrado na figura.
O Programa Python para mostrar caracteres em LED Matrix usando Raspberry Pi é fornecido abaixo. O programa é bem explicado por comentários. Os valores da porta para cada caractere são fornecidos no programa. Você pode mostrar os caracteres que quiser apenas alterando os valores 'pinp' nos 'loops for' no programa fornecido. Verifique também o vídeo de demonstração abaixo.