Vi har laget en serie Raspberry Pi-opplæringsprogrammer, der vi har dekket grensesnitt av Raspberry Pi med alle grunnleggende komponenter som LED, LCD, knapp, DC-motor, servomotor, trinnmotor, ADC, skiftregister, etc. Vi har også publiserte noen enkle Raspberry Pi-prosjekter for nybegynnere, sammen med noen gode IoT-prosjekter. I dag, i forlengelse av disse opplæringene, skal vi kontrollere 8x8 LED Matrix Module av Raspberry Pi. Vi vil skrive et pythonprogram for å vise tegn på matrisemodulen.
Sjekk også Interfacing 8x8 LED Matrix med Arduino og LED Matrix med AVR Microcontorller.
Nødvendige komponenter:
Her bruker vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alle de grunnleggende maskinvare- og programvarekravene er tidligere diskutert, du kan slå opp i Raspberry Pi Introduction og Raspberry PI LED Blinking for å komme i gang, annet enn det vi trenger:
- Raspberry Pi Board
- Strømforsyning (5v)
- 1000uF kondensator (tilkoblet strømforsyning)
- 1KΩ motstand (8 deler)
8x8 LED matrisemodul:
En 8 * 8 LED-matrisemodul inneholder 64 LED (lysemitterende dioder) som er ordnet i form av en matrise, derav navnet LED-matrise. Disse kompakte modulene er tilgjengelige i forskjellige størrelser og mange farger. Man kan velge dem på bekvemmelighet. PIN-konfigurasjonen til modulen er som vist på bildet. Husk at pinoutene på modulen ikke er i orden, så PIN-kodene bør nummereres nøyaktig som vist på bildet for å unngå feil.
Det er 8 + 8 = 16 vanlige terminaler i LED Matrix-modulen. Over dem har vi 8 vanlige positive terminaler og 8 vanlige negative terminaler, i form av 8 rader og 8 kolonner, for å koble 64 LED i matriseform. Hvis modulen skulle tegnes i form av kretsskjema, vil vi ha et bilde som vist nedenfor:
Så for 8 rader har vi 8 vanlige positive terminaler (9, 14, 8, 12, 17, 2, 5). Tenk på den første raden, lysdiodene fra D1 til D8 har en felles positiv terminal, og pinnen bringes ut ved PIN9 i LED Matrix-modulen. Når vi vil at en eller alle lysdioder i en RAD skal være PÅ, bør den tilsvarende pinnen på LED-MODULEN få strøm med + 3,3 v.
I likhet med vanlige positive terminaler har vi 8 vanlige negative terminaler som kolonner (13, 3, 4, 10, 6, 11, 15, 16). For jording av en hvilken som helst LED i en hvilken som helst kolonne, skal den respektive felles negative terminalen jordes.
Kretsforklaring:
Forbindelsene som gjøres mellom Raspberry Pi og LED-matrisemodulen er vist i tabellen nedenfor.
LED Matrix Module Pin nr. |
Funksjon |
Raspberry Pi GPIO Pin nr. |
1. 3 |
POSITIV0 |
GPIO12 |
3 |
POSITIV1 |
GPIO22 |
4 |
POSITIV2 |
GPIO27 |
10 |
POSITIV 3 |
GPIO25 |
6 |
POSITIV 4 |
GPIO17 |
11 |
POSITIV5 |
GPIO24 |
15 |
POSITIV 6 |
GPIO23 |
16 |
POSITIV7 |
GPIO18 |
9 |
NEGATIV0 |
GPIO21 |
14 |
NEGATIV1 |
GPIO20 |
8 |
NEGATIV2 |
GPIO26 |
12 |
NEGATIV3 |
GPIO16 |
1 |
NEGATIV4 |
GPIO19 |
7 |
NEGATIV5 |
GPIO13 |
2 |
NEGATIV6 |
GPIO6 |
5 |
NEGATIV7 |
GPIO5 |
Her er det endelige kretsskjemaet for grensesnitt 8x8 LED-matrise med Raspberry Pi:
Arbeidsforklaring:
Her vil vi bruke multipleksingsteknikk for å vise tegn på 8x8 LED Matrix Module. Så la oss diskutere om denne multiplekseringen i detalj. Si at hvis vi vil slå på LED D10 i matrisen, må vi slå på PIN14 på modulen og jorde PIN3 på modulen. Med denne lysdioden slås D10 PÅ som vist i figuren nedenfor. Dette bør også sjekkes først for at MATRIX skal vite at alt er i orden.
Si nå at hvis vi vil slå på D1, må vi slå på PIN9 i matrisen og jorde PIN13. Med den lyser LED D1. Den nåværende retningen i dette tilfellet er vist i figuren nedenfor.
Nå for den vanskelige delen, vurder at vi vil slå på både D1 og D10 samtidig. Så vi bør slå både PIN9, PIN14 og jord begge PIN13, PIN3. Dette vil slå på LED D1 og D10, men sammen med det vil den også slå på LED D2 og D9. Det er fordi de deler vanlige terminaler. Så hvis vi vil slå på lysdiodene langs diagonalen, vil vi bli tvunget til å slå på alle lysdiodene underveis. Dette er vist i figuren nedenfor:
For å unngå dette problemet bruker vi en teknikk som heter Multiplexing. Vi har også diskutert denne multipleksingsteknikken mens vi grensesnitt 8x8 LED Matrix med AVR, her forklarer vi igjen. Den samme multipleksingsteknikken brukes også i Scrolling Text på 8x8 LED-matrise med Arduino og med AVR-mikrokontroller.
Det menneskelige øye kan ikke fange en frekvens på mer enn 30 Hz. Det er hvis en LED lyser kontinuerlig PÅ og AV med en hastighet på 30 Hz eller mer. Øyet ser på LED-lampen som kontinuerlig PÅ. Dette er imidlertid ikke tilfelle, og LED vil faktisk slå seg på og av konstant. Denne teknikken kalles Multiplexing.
La oss for eksempel si at vi bare vil slå på LED D1 og LED D10 uten å slå på D2 og D9. Trikset er at vi først vil gi strøm til bare LED D1 ved hjelp av PIN 9 og 13 og vente på 1mSEC, og så vil vi slå den AV. Deretter vil vi gi strøm til LED D10 ved hjelp av PIN 14 & 3 og vente på 1mSEC og deretter slå den AV. Syklusen går kontinuerlig med høy frekvens, og D1 og D10 slås raskt på og av, og begge LED-lampene ser ut til å være kontinuerlig PÅ for øyet. Betyr at vi bare gir strøm til en rad (LED) om gangen, noe som eliminerer sjansene for å slå på andre lysdioder i andre rader. Vi vil bruke denne teknikken til å vise alle tegn.
Vi kan forstå det videre med ett eksempel, som om vi vil vise "A" på matrisen, som vist nedenfor:
Som sagt vil vi slå på en rad på et øyeblikk, Ved t = 0m SEC er PIN09 satt HIGH (andre ROW-pinner er LAV på dette tidspunktet) på dette tidspunktet, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 er jordet (andre COLUMN-pinner er HØY på dette tidspunktet)
Ved t = 1m SEC er PIN14 satt HIGH (andre ROW-pinner er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 er jordet (andre COLUMN-pinner er HØY på dette tidspunktet)
Ved t = 2m SEC er PIN08 satt HIGH (andre ROW-pinner er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN15, PIN16 er jordet (andre COLUMN-pinner er HØY på dette tidspunktet)
Ved t = 3m SEC er PIN12 satt HIGH (andre ROW-pins er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN15, PIN16 er jordet (andre COLUMN-pins er HIGH på dette tidspunktet)
Ved t = 4m SEC er PIN01 satt HIGH (andre ROW-pinner er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 er jordet (andre COLUMN-pinner er HØY på dette tidspunktet)
Ved t = 5m SEC er PIN07 satt HIGH (andre ROW-pinner er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 er jordet (andre COLUMN-pinner er HØY på dette tidspunktet)
Ved t = 6m SEC er PIN02 satt HIGH (andre ROW-pins er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN15, PIN16 er jordet (andre COLUMN-pins er HIGH på dette tidspunktet)
Ved t = 7m SEC er PIN05 satt HIGH (andre ROW-pins er LAV på dette tidspunktet) på dette tidspunktet, PIN13, PIN3, PIN15, PIN16 er jordet (andre COLUMN-pins er HIGH på dette tidspunktet)
I denne hastigheten vil displayet bli sett på som kontinuerlig å vise “A” -tegnet som vist i figuren.
Den Python-programmet for å vise tegn på LED Matrix bruke Raspberry Pi er gitt nedenfor. Programmet er godt forklart av kommentarer. Portverdier for hvert tegn er gitt i programmet. Du kan vise hvilke tegn du vil ved å bare endre "pinp" -verdiene i "for loops" i det gitte programmet. Sjekk også demonstrasjonsvideoen nedenfor.