Ustvarili smo vrsto vadnic Raspberry Pi, v katerih smo zajeli vmesnike Raspberry Pi z vsemi osnovnimi komponentami, kot so LED, LCD, gumb, enosmerni motor, servo motor, koračni motor, ADC, register prestav itd. objavil nekaj preprostih projektov Raspberry Pi za začetnike in nekaj dobrih IoT projektov. Danes bomo v nadaljevanju teh vadnic upravljali 8x8 LED matrični modul podjetja Raspberry Pi. Napisali bomo program python za prikaz znakov na matričnem modulu.
Preverite tudi povezavo 8x8 LED matrike z Arduino in LED matrico z mikrokrmilnikom AVR.
Potrebne komponente:
Tu uporabljamo model Raspberry Pi 2 Model B z OS Raspbian Jessie. Vse osnovne zahteve glede strojne in programske opreme so že obravnavane, za začetek si jih lahko ogledate v Uvodu Raspberry Pi in Utripajoči LED Raspberry PI, razen tistega, kar potrebujemo:
- Plošča Raspberry Pi
- Napajanje (5v)
- 1000uF kondenzator (priključen na napajalnik)
- 1KΩ upor (8 kosov)
8x8 LED matrični modul:
Modul z matrico 8 * 8 LED vsebuje 64 LED (svetleče diode), ki so razporejene v obliki matrike, zato je ime LED matrica. Ti kompaktni moduli so na voljo v različnih velikostih in različnih barvah. Izberemo jih lahko po udobju. Konfiguracija kode PIN modula je prikazana na sliki. Upoštevajte, da moduli modulov niso v redu, zato morajo biti PIN-ji oštevilčeni natančno tako, kot je prikazano na sliki, da se izognete napakam.
V modulu LED Matrix je 8 + 8 = 16 skupnih terminalov. Preko njih imamo 8 skupnih pozitivnih terminalov in 8 skupnih negativnih terminalov v obliki 8 vrstic in 8 stolpcev za priključitev 64 LED v matrični obliki. Če bi modul narisali v obliki vezja, bi imeli sliko, kot je prikazano spodaj:
Za 8 vrstic imamo torej 8 skupnih pozitivnih terminalov (9, 14, 8, 12, 17, 2, 5). Upoštevajte prvo vrstico, LED-ji od D1 do D8 imajo skupni pozitivni priključek in zatič je prikazan na PIN9 modula LED Matrix. Kadar želimo, da ena ali vse LED v vrstici VKLOPI, mora biti ustrezni zatič LED MODULA napajan z + 3,3 v.
Podobno kot običajni pozitivni terminali imamo kot stolpce 8 skupnih negativnih terminalov (13, 3, 4, 10, 6, 11, 15, 16). Za ozemljitev katere koli LED v katerem koli stolpcu mora biti ozemljen ustrezen skupni negativni priključek.
Pojasnilo vezja:
Povezave med Raspberry Pi in matričnim modulom LED so prikazane v spodnji tabeli.
LED matrični modul Pin št. |
Funkcija |
Raspberry Pi GPIO Pin št. |
13. |
POZITIVNO0 |
GPIO12 |
3. |
POZITIVNO1 |
GPIO22 |
4. |
POZITIVNO2 |
GPIO27 |
10. |
POZITIVNO3 |
GPIO25 |
6. |
POZITIVNO4 |
GPIO17 |
11. |
POZITIVNO5 |
GPIO24 |
15. |
POZITIVNO6 |
GPIO23 |
16. |
POZITIVNO7 |
GPIO18 |
9. |
NEGATIVNO0 |
GPIO21 |
14. |
NEGATIVNO1 |
GPIO20 |
8. |
NEGATIVNO2 |
GPIO26 |
12. |
NEGATIVNO3 |
GPIO16 |
1. |
NEGATIVNO4 |
GPIO19 |
7. |
NEGATIVNO5 |
GPIO13 |
2. |
NEGATIVNO6 |
GPIO6 |
5. |
NEGATIVNO7 |
GPIO5 |
Tu je končni diagram vezja za povezovanje 8x8 LED matrice z Raspberry Pi:
Delovna razlaga:
Tu bomo uporabili Multiplexing Technique za prikaz znakov na 8x8 LED matričnem modulu. Torej, o tem multipleksiranju se pogovorimo podrobno. Recimo, če želimo v matriki vklopiti LED D10, moramo napajati PIN14 modula in ozemljiti PIN3 modula. S tem LED D10 se vklopi, kot je prikazano na spodnji sliki. To je treba najprej preveriti tudi za MATRIX, da bo vedel, da je vse v redu.
Zdaj recimo, če želimo vklopiti D1, moramo vklopiti PIN9 matrice in ozemljiti PIN13. S tem bo LED D1 svetil. Trenutna smer v tem primeru je prikazana na spodnji sliki.
Zdaj, ko gre za zapleten del, pomislimo, da želimo hkrati vklopiti D1 in D10. Torej bi morali napajati oba PIN9, PIN14 in ozemljiti oba PIN13, PIN3. To bo vklopilo LED D1 in D10, hkrati pa bo vključilo tudi LED D2 in D9. To je zato, ker imajo skupne terminale. Če želimo torej vklopiti LED-diode vzdolž diagonale, bomo na poti prisiljeni vklopiti vse LED-diode. To je prikazano na spodnji sliki:
Da bi se izognili tej težavi, uporabljamo tehniko, imenovano Multiplexing. O tej tehniki multipleksiranja smo razpravljali tudi med povezovanjem 8x8 LED matrice z AVR, tukaj ponovno pojasnjujemo. Ista tehnika multipleksiranja se uporablja tudi pri drsenju po besedilu na 8x8 LED matriki z Arduino in z mikrokrmilnikom AVR.
Človeško oko ne more zajeti frekvence več kot 30 HZ. To je, če se LED dioda neprekinjeno vklaplja in izklaplja s hitrostjo 30 HZ ali več. Oko vidi LED kot neprekinjeno vklopljeno. Vendar temu ni tako in LED se bo dejansko nenehno VKLOPILA in IZKLOPILA. Ta tehnika se imenuje multipleksiranje.
Recimo, da želimo na primer vklopiti samo LED D1 in LED D10, ne da bi vklopili D2 in D9. Trik je v tem, da bomo s pomočjo PIN 9 in 13 najprej napajali samo LED D1 in počakali na 1mSEC, nato pa ga izklopili. Nato bomo napajali LED D10 s PIN 14 in 3 in počakali na 1mSEC, nato pa ga izklopili. Cikel poteka neprekinjeno z visoko frekvenco in D1 in D10 se hitro vklapljata in izklapljata, obe LED pa se zdi, da sta neprekinjeno vklopljeni za naše oko. Pomeni, da napajamo samo eno vrstico (LED) naenkrat, kar izključuje možnosti vklopa drugih LED v drugih vrsticah. S to tehniko bomo uporabili vse znake.
Nadalje ga lahko razumemo z enim primerom, na primer, če želimo na matriki prikazati "A", kot je prikazano spodaj:
Kot rečeno, bomo v trenutku VKLOPILI eno vrstico, Pri t = 0m SEC je PIN09 nastavljen HIGH (trenutno so drugi ROW zatiči NIZKI), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 so ozemljeni (drugi zatiči STOLPCA so VISOKO trenutno)
Pri t = 1m SEC je PIN14 trenutno nastavljen HIGH (drugi ROW zatiči so NIZKO trenutno), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 so ozemljeni (drugi zatiči STOLPCA so trenutno VISOKI)
Pri t = 2m SEC je PIN08 nastavljen VISOKO (drugi ROW zatiči so trenutno NIZKI), PIN13, PIN3, PIN15, PIN16 so ozemljeni (drugi zatiči STOLPCA so VISOKO trenutno)
Pri t = 3m SEC je PIN12 trenutno nastavljen HIGH (drugi ROW zatiči so NIZKO trenutno), PIN13, PIN3, PIN15, PIN16 so ozemljeni (drugi COLUMN zatiči so VISOKO v tem trenutku)
Pri t = 4m SEC je PIN01 trenutno nastavljen HIGH (drugi ROW zatiči so NIZKO trenutno), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 so ozemljeni (drugi COLUMN zatiči so VISOKO trenutno)
Pri t = 5m SEC je PIN07 nastavljen VISOKO (drugi ROW zatiči so trenutno NIZKI), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 so ozemljeni (drugi zatiči STOLPCA so trenutno VISOKI)
Pri t = 6m SEC je PIN02 nastavljen HIGH (trenutno so drugi ROW zatiči NIZKI), PIN13, PIN3, PIN15, PIN16 so ozemljeni (drugi COLUMN zatiči so VISOKO v tem trenutku)
Pri t = 7m SEC je PIN05 nastavljen VISOKO (drugi ROW zatiči so trenutno NIZKI), PIN13, PIN3, PIN15, PIN16 so ozemljeni (drugi zatiči STOLPCA so trenutno VISOKI)
Pri tej hitrosti bo zaslon prikazan kot neprekinjen znak "A", kot je prikazano na sliki.
Program Python za prikaz znakov na matriki LED z uporabo Raspberry Pi je podan spodaj. Program je dobro razložen s komentarji. Vrednosti vrat za vsak znak so podane v programu. Kažete lahko poljubne znake, tako da samo spremenite vrednosti 'pinp' v 'for zanke' v danem programu. Oglejte si tudi predstavitveni video spodaj.