Létrehoztunk egy Raspberry Pi oktatóanyagot, amelyekben bemutattuk a Raspberry Pi összekapcsolását az összes olyan alapkomponenssel, mint a LED, LCD, gomb, egyenáramú motor, szervomotor, léptető motor, ADC, shift register stb. közzétett néhány egyszerű Raspberry Pi projektet kezdőknek, valamint néhány jó IoT projektet. Ma ezen oktatóanyagok folytatásaként a Raspberry Pi által vezérelt 8x8 LED-es mátrix modulra megyünk. Írunk egy python programot a karakterek megjelenítésére a mátrix modulon.
Ellenőrizze az Interfacing 8x8 LED Matrix with Arduino és a LED Matrix with AVR Microcontorller elemeket is.
Szükséges alkatrészek:
Itt a Raspberry Pi 2 Model B-t használjuk Raspbian Jessie operációs rendszerrel. Az összes alapvető hardver- és szoftverkövetelményt korábban megbeszéltük. Megtekintheti a Raspberry Pi bevezetőjében és a Raspberry PI LED villog a kezdéshez, azon kívül, amire szükségünk van:
- Raspberry Pi Board
- Tápegység (5v)
- 1000uF kondenzátor (a tápegységen keresztül csatlakozik)
- 1KΩ ellenállás (8 db)
8x8 LED mátrix modul:
Egy 8 * 8 LED-es mátrix modul 64 LED-et (fénykibocsátó diódát) tartalmaz, amelyek mátrix formájában vannak elrendezve, ezért a neve LED-mátrix. Ezek a kompakt modulok különböző méretben és sokféle színben kaphatók. Könnyen kiválaszthatja őket. A modul PIN-konfigurációja a képen látható. Ne feledje, hogy a modul pinoutjai nincsenek rendben, ezért a hibák elkerülése érdekében a PIN-kódokat pontosan úgy kell megszámozni, mint a képen.
A LED Matrix modulban 8 + 8 = 16 közös terminál található. Rajtuk van 8 közös pozitív terminál és 8 közös negatív terminál, 8 sor és 8 oszlop formájában, 64 mátrix formájú LED összekapcsolására. Ha a modult kapcsolási rajz formájában rajzolnánk, akkor lesz egy képünk az alábbiak szerint:
Tehát 8 sorban 8 közös pozitív terminálunk van (9, 14, 8, 12, 17, 2, 5). Tekintsük az első sort, hogy a D1-től D8-ig terjedő LED-eknek van egy közös pozitív kapcsa, és a csapot a LED Matrix modul PIN9-nél hozzák ki. Ha azt akarjuk, hogy egy sorban az egyik vagy az összes LED világítson, akkor a LED MODUL megfelelő érintkezőjének + 3,3 V-tal kell táplálnia.
Hasonlóan a közös pozitív terminálokhoz, itt is 8 közös negatív terminál van oszlopként (13, 3, 4, 10, 6, 11, 15, 16). Bármely oszlopban lévő LED földeléséhez a megfelelő közös negatív kivezetést földelni kell.
Áramkör magyarázat:
A Raspberry Pi és a LED mátrix modul közötti kapcsolatokat az alábbi táblázat mutatja.
LED mátrix modul csapsz. |
Funkció |
Raspberry Pi GPIO Pin No. |
13. |
POZITÍV0 |
GPIO12 |
3 |
POZITÍV1 |
GPIO22 |
4 |
POZITÍV2 |
GPIO27 |
10. |
POZITÍV3 |
GPIO25 |
6. |
POZITÍV4 |
GPIO17 |
11. |
POZITÍV5 |
GPIO24 |
15 |
POZITÍV6 |
GPIO23 |
16. |
POZITÍV7 |
GPIO18 |
9. |
NEGATÍV0 |
GPIO21 |
14 |
NEGATÍV |
GPIO20 |
8. |
NEGATÍV2 |
GPIO26 |
12. |
NEGATÍV3 |
GPIO16 |
1 |
NEGATÍV4 |
GPIO19 |
7 |
NEGATÍV5 |
GPIO13 |
2 |
NEGATÍV6 |
GPIO6 |
5. |
NEGATÍV7 |
GPIO5 |
Itt található a 8x8 LED-es mátrix és a Raspberry Pi összekapcsolásának végső kapcsolási rajza:
Munka magyarázat:
Itt a Multiplexing technikát fogjuk használni a karakterek megjelenítéséhez a 8x8 LED Matrix modulon. Tehát beszéljünk erről a multiplexelésről részletesen. Mondjuk, ha be akarjuk kapcsolni a D10 LED-et a mátrixban, akkor be kell kapcsolnunk a modul PIN14-ét, és földelnünk kell a modul PIN3-át. Ezzel a LED-del a D10 bekapcsol, ahogy az alábbi ábra mutatja. Ezt először is ellenőrizni kell, hogy a MATRIX tudja-e, hogy minden rendben van.
Mondjuk, ha be akarjuk kapcsolni a D1-et, akkor be kell kapcsolnunk a mátrix PIN9-ét és földelnünk a PIN13-at. Ezzel a D1 LED világítani fog. Az aktuális irányt ebben az esetben az alábbi ábra mutatja.
Most a trükkös részről vegyük fontolóra, hogy egyszerre szeretnénk bekapcsolni a D1-et és a D10-et is. Tehát táplálnunk kell mind a PIN9-et, mind a PIN14-et, mind a földet mind a PIN13, mind a PIN3 kódot. Ez bekapcsolja a D1 és D10 LED-et, de ezzel együtt a D2 és D9 LED-et is. Ez azért van, mert közös terminálok vannak. Tehát, ha az átló mentén be akarjuk kapcsolni a LED-eket, akkor kénytelenek vagyunk az út során az összes LED-et bekapcsolni. Ez látható az alábbi ábrán:
A probléma elkerülése érdekében a Multiplexing nevű technikát alkalmazzuk. Megbeszéltük ezt a multiplexelési technikát is, miközben összekötjük a 8x8 LED-es mátrixot az AVR-rel, itt ismét elmagyarázzuk. Ugyanezt a multiplexelési technikát használják a Szöveg görgetése 8x8 LED-es mátrixon, Arduino és AVR mikrokontrollerrel.
Az emberi szem nem képes megragadni 30 HZ-nél nagyobb frekvenciát. Ez akkor van, ha egy LED folyamatosan be- és kikapcsol, 30 Hz vagy annál nagyobb sebességgel. A szem látja, hogy a LED folyamatosan BE van kapcsolva. Ez azonban nem így van, és a LED valóban folyamatosan be- és kikapcsol. Ezt a technikát Multiplexelésnek hívják.
Tegyük fel például, hogy csak a D1 és a D10 LED-et akarjuk bekapcsolni anélkül, hogy bekapcsolnánk a D2 és a D9-et. Az a trükk, hogy először csak a 9-es és 13-as PIN-kódot használjuk csak a D1 LED-nek, és várunk 1mSEC-re, majd kikapcsoljuk. Ezután tápfeszültséget biztosítunk a D10 LED-nek a 14-es és 3-as PIN kód használatával, és várunk 1 mSEC-ig, majd kikapcsoljuk. A ciklus folyamatosan zajlik nagy frekvenciával, és a D1 és D10 gyorsan be- és kikapcsol, és úgy tűnik, hogy mindkét LED folyamatosan be van kapcsolva a szemünk számára. Azt jelenti, hogy egyszerre csak egy sort (LED) látunk el energiával, kiküszöbölve annak esélyét, hogy más sorokban más LED-ek is bekapcsoljanak. Ezt a technikát fogjuk használni az összes karakter megjelenítésére.
Egy példával tovább megérthetjük, például ha az „A” -t szeretnénk megjeleníteni a mátrixon, az alábbiak szerint:
Ahogy mondtuk, egy sort azonnal bekapcsolunk, T = 0m SEC értéknél a PIN09 értéke HIGH (a többi ROW tű ekkor LOW) van beállítva, a PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 földelt (a többi COLUMN tű magas)
T = 1m SEC értéknél a PIN14 értéke HIGH (más ROW csapok ekkor LOW) vannak beállítva, a PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 földeltek (a többi COLUMN tüske jelenleg MAGAS)
T = 2m SEC értéknél a PIN08 HIGH értékre van állítva (a többi ROW tű ekkor LOW), a PIN13, PIN3, PIN15, PIN16 földelésre kerül (a többi COLUMN tű ekkor MAGAS)
T = 3m SEC értéknél a PIN12 értéke HIGH (más ROW csapok ekkor LOW) vannak beállítva, a PIN13, PIN3, PIN15, PIN16 földelve vannak (más COLUMN csapok ebben az időben MAGASAK)
T = 4m SEC értéknél a PIN01 értéke HIGH (a többi ROW tű ekkor LOW) van beállítva, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 földelt (más COLUMN csapok ebben az időben MAGASAK))
T = 5m SEC értéknél a PIN07 értéke HIGH (más ROW csapok ekkor LOW) vannak beállítva, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 földelve vannak (a többi COLUMN tű magas))
T = 6m SEC értéknél a PIN02 HIGH értékre van állítva (a többi ROW tű ekkor LOW), a PIN13, PIN3, PIN15, PIN16 földelésre kerül (a többi COLUMN tű ekkor MAGAS)
T = 7m SEC értéknél a PIN05 értéke HIGH (más ROW csapok ekkor LOW) vannak beállítva, a PIN13, PIN3, PIN15, PIN16 földelve vannak (a többi COLUMN tű ekkor MAGAS)
Ennél a sebességnél a kijelző folyamatosan „A” karaktert mutat, amint az az ábrán látható.
Az alábbiakban bemutatjuk a Python programot a karakterek megjelenítésére a LED mátrixon a Raspberry Pi segítségével. A programot kommentekkel jól magyarázzák. Az egyes karakterek portértékeit a program tartalmazza. Bármelyik karaktert megmutathatja, ha csak megváltoztatja a 'pinp' értékeket az adott program 'for ciklusaihoz' . Ellenőrizze az alábbi Demo videót is.