Mes sukūrėme „Raspberry Pi“ mokymo programų seriją, kurioje apėmėme „Raspberry Pi“ sąsają su visais pagrindiniais komponentais, tokiais kaip LED, LCD, mygtukas, nuolatinės srovės variklis, servovariklis, „Stepper“ variklis, ADC, „shift register“ ir kt. Mes taip pat turime paskelbė keletą paprastų „Raspberry Pi“ projektų pradedantiesiems kartu su keletu gerų DI projektų. Šiandien, tęsdami šias mokymo programas, mes eisime į „Raspberry Pi“ valdomą 8x8 LED matricos modulį. Parašysime python programą, kad matricos modulis parodytų simbolius.
Taip pat patikrinkite „Interfacing 8x8 LED Matrix“ su „Arduino“ ir „LED Matrix“ su „AVR Microcontorller“.
Būtini komponentai:
Čia mes naudojame „ Raspberry Pi 2 Model B“ su „Raspbian Jessie OS“. Visi pagrindiniai aparatinės ir programinės įrangos reikalavimai buvo aptarti anksčiau, jų galite rasti „Raspberry Pi“ įvade ir mirksi „Raspberry PI“ šviesos diodas, išskyrus tai, ko mums reikia:
- Aviečių Pi lenta
- Maitinimo šaltinis (5v)
- 1000uF kondensatorius (prijungtas prie maitinimo šaltinio)
- 1KΩ rezistorius (8 vnt.)
8x8 LED matricos modulis:
8 * 8 LED matricos modulyje yra 64 LED (šviesos diodai), kurie yra išdėstyti matricos pavidalu, taigi pavadinimas yra LED matrica. Šie kompaktiški moduliai yra skirtingų dydžių ir įvairių spalvų. Galima juos pasirinkti patogumui. Modulio PIN konfigūracija yra tokia, kaip parodyta paveikslėlyje. Atminkite, kad modulio kištukai nėra tvarkingi, todėl norint išvengti klaidų, PIN kodai turėtų būti sunumeruoti tiksliai taip, kaip parodyta paveikslėlyje.
LED matricos modulyje yra 8 + 8 = 16 bendrų gnybtų. Virš jų turime 8 įprastus teigiamus gnybtus ir 8 bendrus neigiamus gnybtus, 8 eilučių ir 8 stulpelių pavidalu, skirtus 64 šviesos diodams sujungti matricos pavidalu. Jei modulis būtų nupieštas grandinės schemos forma, turėsime paveikslėlį, kaip parodyta žemiau:
Taigi 8 eilutėms turime 8 bendrus teigiamus terminalus (9, 14, 8, 12, 17, 2, 5). Apsvarstykite pirmąją eilutę: šviesos diodai nuo D1 iki D8 turi bendrą teigiamą gnybtą, o kaištis išvedamas ties LED matricos modulio PIN9. Kai norime, kad vienas ar visi EILUTĖS šviesos diodai būtų įjungti, atitinkamas LED modulio kaištis turėtų būti maitinamas + 3,3 V įtampa.
Panašiai kaip įprasti teigiami terminalai, mes turime 8 bendrus neigiamus terminalus kaip stulpelius (13, 3, 4, 10, 6, 11, 15, 16). Bet kurio stulpelio šviesos diodo įžeminimui reikia įžeminti atitinkamą bendrą neigiamą gnybtą.
Grandinės paaiškinimas:
Ryšiai, atlikti tarp „ Raspberry Pi“ ir LED matricos modulio, parodyti žemiau esančioje lentelėje.
LED matricos modulio kaištis Nr. |
Funkcija |
„Raspberry Pi GPIO“ kaiščio Nr. |
13 |
TEIGIAMAS0 |
GPIO12 |
3 |
TEIGIAMAS1 |
GPIO22 |
4 |
TEIGIAMAS2 |
GPIO27 |
10 |
TEIGIAMAS3 |
GPIO25 |
6 |
TEIGIAMAS4 |
GPIO17 |
11 |
TEIGIAMAS5 |
GPIO24 |
15 |
TEIGIAMAS6 |
GPIO23 |
16 |
TEIGIAMAS7 |
GPIO18 |
9 |
NEIGIAMA0 |
GPIO21 |
14 |
NEIGIAMAS1 |
GPIO20 |
8 |
NEIGIAMAS2 |
GPIO26 |
12 |
NEIGIAMAS3 |
GPIO16 |
1 |
NEIGIAMAS4 |
GPIO19 |
7 |
NEIGIAMAS5 |
GPIO13 |
2 |
NEIGIAMAS6 |
GPIO6 |
5 |
NEIGIAMAS7 |
GPIO5 |
Čia yra 8x8 LED matricos sąveikos su avietėmis Pi galutinė grandinės schema:
Darbinis paaiškinimas:
Čia mes naudosime „ Multiplexing Technique“, kad parodytume simbolius 8x8 LED matricos modulyje. Taigi išsamiai aptarkime apie šį multipleksavimą. Tarkime, jei norime įjungti šviesos diodą D10 matricoje, turime įjungti modulio PIN14 ir įžeminti modulio PIN3. Su šiuo LED D10 įsijungs, kaip parodyta žemiau esančiame paveikslėlyje. Pirmiausia taip pat reikėtų patikrinti, ar MATRIX žino, kad viskas tvarkoje.
Tarkime, jei norime įjungti D1, turime įjungti matricos PIN9 ir įžeminti PIN13. Su tuo LED D1 šviečia. Dabartinė kryptis šiuo atveju parodyta žemiau esančiame paveiksle.
Dabar kalbėkime apie keblią dalį: norime vienu metu įjungti ir D1, ir D10. Taigi turėtume įjungti tiek PIN9, tiek PIN14, tiek įžeminti PIN13, PIN3. Tai įjungs šviesos diodus D1 ir D10, bet kartu įjungs ir LED D2 ir D9. Taip yra todėl, kad jie naudojasi bendrais terminalais. Taigi, jei norime įjungti įstrižainės šviesos diodus, būsime priversti įjungti visus šviesos diodus. Tai parodyta žemiau esančiame paveikslėlyje:
Norėdami išvengti šios problemos, mes naudojame metodą, vadinamą „ Multiplexing“. Mes taip pat aptarėme šią multipleksavimo techniką, susiesdami 8x8 LED matricą su AVR, čia mes dar kartą paaiškiname. Ta pati multipleksavimo technika taip pat naudojama slenkant tekstą 8x8 LED matricoje su „Arduino“ ir su AVR mikrovaldikliu.
Žmogaus akis negali užfiksuoti didesnio nei 30 HZ dažnio. Tai yra, jei šviesos diodas nuolat įsijungia ir išsijungia 30 Hz ar didesniu greičiu. Akis mato šviesos diodą nuolat įjungtą. Tačiau taip nėra, o šviesos diodai bus nuolat įjungiami ir išjungiami. Ši technika vadinama multipleksavimu.
Tarkime, mes norime įjungti tik LED D1 ir LED D10 neįjungdami D2 ir D9. Apgaulė yra ta, kad pirmiausia maitinsime tik šviesos diodą D1 naudodami PIN 9 ir 13 ir palaukite 1 mSEC, tada mes jį išjungsime. Tada maitinsime LED D10 naudodamiesi PIN 14 ir 3 PIN kodais ir palaukite 1mSEC, tada jį išjungsime. Ciklas nuolat eina aukštu dažniu, o D1 ir D10 greitai įsijungia ir išsijungia, ir abu šviesos diodai mūsų akiai nuolat įsijungia. Tai reiškia, kad vienu metu maitiname tik vieną eilutę (LED), pašalindami galimybę įjungti kitus šviesos diodus kitose eilėse. Šią techniką naudosime visiems simboliams parodyti.
Mes galime tai suprasti toliau pateikdami vieną pavyzdį, pavyzdžiui, jei matricoje norime parodyti „A“, kaip parodyta žemiau:
Kaip sakyta, mes įjungsime vieną eilutę akimirksniu, Kai t = 0m SEC, PIN09 nustatomas HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra aukšti)
Kai t = 1m SEC, PIN14 nustatomas HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra AUKŠTI)
Kai t = 2m SEC, PIN08 nustatoma HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN13, PIN3, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra aukšti)
Kai t = 3m SEC, PIN12 nustatomas HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN13, PIN3, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra aukšti)
Kai t = 4m SEC, PIN01 šiuo metu nustatomas HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra AUKŠTI)
Kai t = 5m SEC, PIN07 šiuo metu nustatomas HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra AUKŠTI)
Kai t = 6m SEC, PIN02 nustatomas HIGH (šiuo metu kiti ROW kaiščiai yra LOW), PIN13, PIN3, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra AUKŠTI)
Kai t = 7m SEC, PIN05 nustatoma HIGH (kiti ROW kaiščiai šiuo metu yra LOW), PIN13, PIN3, PIN15, PIN16 yra įžeminti (kiti COLUMN kaiščiai šiuo metu yra aukšti)
Tokiu greičiu ekranas bus matomas kaip nuolat rodantis „A“ simbolį, kaip parodyta paveiksle.
Žemiau pateikiama „ Python“ programa, skirta rodyti simbolius „LED Matrix“ naudojant „Raspberry Pi“. Programa yra gerai paaiškinta komentarais. Kiekvieno simbolio uosto vertės pateikiamos programoje. Galite parodyti bet kokius norimus simbolius, tiesiog pakeisdami „pinp“ reikšmes „for loops“ programoje. Taip pat patikrinkite toliau pateiktą demonstracinį vaizdo įrašą.