Hem creat una sèrie de tutorials sobre Raspberry Pi, en què hem tractat la interfície de Raspberry Pi amb tots els components bàsics com LED, LCD, botó, motor de corrent continu, servomotor, motor pas a pas, ADC, registre de canvis, etc. va publicar alguns projectes senzills de Raspberry Pi per a principiants, juntament amb alguns bons projectes IoT. Avui, en continuació d’aquests tutorials, anem a controlar el mòdul de matriu LED 8x8 de Raspberry Pi. Escriurem un programa Python per mostrar els caràcters al mòdul matricial.
Consulteu també Interfacing 8x8 LED Matrix amb Arduino i LED Matrix amb AVR Microcontorller.
Components necessaris:
Aquí fem servir Raspberry Pi 2 Model B amb Raspbian Jessie OS. Tots els requisits bàsics de maquinari i programari s’han comentat prèviament. Podeu consultar-los a la Introducció de Raspberry Pi i al LED Raspberry PI Parpellejant per començar, a part del que necessitem:
- Tauler Raspberry Pi
- Font d'alimentació (5v)
- Condensador 1000uF (connectat a través de la font d'alimentació)
- Resistència 1KΩ (8 peces)
Mòdul de matriu LED 8x8:
Un mòdul de matriu LED de 8 * 8 conté 64 LED (díodes emissors de llum) que es disposen en forma de matriu, per tant el nom és matriu LED. Aquests mòduls compactes estan disponibles en diferents mides i colors. Es pot triar per comoditat. La configuració del PIN del mòdul és la que es mostra a la imatge. Tingueu en compte que els pinouts del mòdul no estan en ordre, de manera que els PIN s’han de numerar exactament com es mostra a la imatge per evitar errors.

Hi ha 8 + 8 = 16 terminals comuns al mòdul LED Matrix. Sobre ells, tenim 8 terminals positius comuns i 8 terminals negatius comuns, en forma de 8 files i 8 columnes, per connectar 64 LED en forma de matriu. Si el mòdul es dibuixés en forma de diagrama de circuits, tindrem una imatge com es mostra a continuació:

Per tant, per a 8 files, tenim 8 terminals positius comuns (9, 14, 8, 12, 17, 2, 5). Tingueu en compte la primera fila, els LED de D1 a D8 tenen un terminal positiu comú i el pin es posa al PIN9 del mòdul LED Matrix. Quan volem que un o tots els LEDs d'una fila estiguin encesos, el pin corresponent del LED MODULE s'hauria d'alimentar amb + 3,3v.
De manera similar als terminals positius comuns, tenim 8 terminals negatius comuns com a columnes (13, 3, 4, 10, 6, 11, 15, 16). Per posar a terra qualsevol LED de qualsevol columna, el respectiu terminal negatiu comú que cal connectar a terra.
Explicació del circuit:
Les connexions que es fan entre Raspberry Pi i el mòdul de matriu LED es mostren a la taula següent.
|
Mòdul LED Matrix Pin núm. |
Funció |
Pin de GPIO Raspberry Pi núm. |
|
13 |
POSITIU0 |
GPIO12 |
|
3 |
POSITIU1 |
GPIO22 |
|
4 |
POSITIU2 |
GPIO27 |
|
10 |
POSITIU3 |
GPIO25 |
|
6 |
POSITIU4 |
GPIO17 |
|
11 |
POSITIU5 |
GPIO24 |
|
15 |
POSITIU6 |
GPIO23 |
|
16 |
POSITIU7 |
GPIO18 |
|
9 |
NEGATIU0 |
GPIO21 |
|
14 |
NEGATIU1 |
GPIO20 |
|
8 |
NEGATIU2 |
GPIO26 |
|
12 |
NEGATIU3 |
GPIO16 |
|
1 |
NEGATIU4 |
GPIO19 |
|
7 |
NEGATIU5 |
GPIO13 |
|
2 |
NEGATIU6 |
GPIO6 |
|
5 |
NEGATIU7 |
GPIO5 |
Aquí teniu el diagrama final del circuit per a la interfície de matriu LED 8x8 amb Raspberry Pi:

Explicació de treball:
Aquí utilitzarem la tècnica de multiplexació per mostrar personatges al mòdul de matriu LED de 8x8. Així doncs, discutim detalladament sobre aquest multiplexat. Digueu que si volem encendre el LED D10 a la matriu, hem d’alimentar el PIN14 del mòdul i posar a terra el PIN3 del mòdul. Amb aquest LED, el D10 s’encendrà com es mostra a la figura següent. Això també s'hauria de comprovar primer per MATRIX per saber que tot està en ordre.

Ara, digueu que si volem activar D1, hem d’alimentar el PIN9 de la matriu i posar a terra el PIN13. Amb aquest LED, el D1 brillarà. La direcció actual en aquest cas es mostra a la figura següent.

Ara, per la part complicada, penseu que volem activar D1 i D10 alhora. Per tant, hauríem d’alimentar tant el PIN9, el PIN14 com la connexió a terra del PIN13, el PIN3. Això encendrà els LED D1 i D10, però junt amb això també s’encendrà els LED D2 i D9. És perquè comparteixen terminals comuns. Per tant, si volem encendre els LED al llarg de la diagonal, ens veurem obligats a encendre tots els LED del camí. Això es mostra a la figura següent:

Per evitar aquest problema, fem servir una tècnica anomenada multiplexació. També hem debatut sobre aquesta tècnica de multiplexació mentre interfrivem la matriu LED de 8x8 amb AVR, aquí ho expliquem de nou. Aquesta mateixa tècnica de multiplexació també s’utilitza en Scrolling Text en matriu LED de 8x8 amb Arduino i amb microcontrolador AVR.
L’ull humà no pot captar una freqüència superior a 30 Hz. Això és si un LED s’encén i s’apaga contínuament a un ritme de 30 Hz o més. L'ull veu que el LED està continuament encès. Tanmateix, aquest no és el cas i el LED s'encén i s'apaga constantment. Aquesta tècnica s’anomena multiplexació.
Suposem, per exemple, que només volem encendre el LED D1 i el LED D10 sense encendre el D2 i el D9. El truc és que primer subministrarem alimentació al LED D1 només mitjançant el PIN 9 i 13 i esperarem 1 mSEC, i després el desactivarem. A continuació, subministrarem alimentació al LED D10 mitjançant els PIN 14 i 3 i esperarem 1 mSEC i, a continuació, l’APAGAREM. El cicle continua contínuament amb alta freqüència i el D1 i el D10 s’encenen i s’apaguen ràpidament i els dos LED semblaran estar continuament encès als nostres ulls. Vol dir que només proporcionem energia a una fila (LED) alhora, eliminant les possibilitats d’encendre altres LEDs en altres files. Utilitzarem aquesta tècnica per mostrar tots els personatges.
Podem entendre-ho encara més amb un exemple, com si volem mostrar "A" a la matriu, com es mostra a continuació:

Com se us va dir, activarem una fila en un instant, A t = 0m SEC, el PIN09 està configurat HIGH (en aquest moment, els altres pins ROW són BAIXOS), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 estan connectats a terra (els altres pins COLUMN són HIGH en aquest moment)
A t = 1m SEC, el PIN14 s'estableix en HIGH (en aquest moment, els altres pins ROW són BAIXOS), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són HIGH en aquest moment)
A t = 2 m SEC, el PIN08 s'estableix en HIGH (en aquest moment, els altres pins ROW són BAIXOS), PIN13, PIN3, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són HIGH en aquest moment)
A t = 3 m SEC, el PIN12 s'estableix en HIGH (en aquest moment, els altres pins ROW són BAIXOS), PIN13, PIN3, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són HIGH en aquest moment)
A t = 4 m SEC, el PIN01 s'estableix ALT (en aquest moment, els altres pins de FILA són BAIXOS), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són ALTS en aquest moment)
A t = 5 m SEC, el PIN07 està configurat ALT (en aquest moment, els altres pins ROW són BAIXOS), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són ALTS en aquest moment))
A t = 6 m SEC, el PIN02 s'estableix en HIGH (en aquest moment, els altres pins ROW són BAIXOS), PIN13, PIN3, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són HIGH en aquest moment)
A t = 7 m SEC, el PIN05 s'estableix en HIGH (en aquest moment, els altres pins ROW són BAIXOS), PIN13, PIN3, PIN15, PIN16 estan connectats a terra (els altres pins COLUMN són HIGH en aquest moment)
A aquesta velocitat, la pantalla es veurà com mostra de forma contínua el caràcter "A" tal com es mostra a la figura.
A continuació es mostra el programa Python per mostrar caràcters a LED Matrix mitjançant Raspberry Pi. Els comentaris expliquen bé el programa. Els valors de port per a cada personatge es donen al programa. Podeu mostrar els caràcters que vulgueu només canviant els valors "pinp" al "for bucles" del programa donat. Consulteu també el vídeo de demostració següent.
