Olemme luoneet sarjan Raspberry Pi -oppaita, joissa olemme käsitelleet Raspberry Pi -liitännän kaikkien peruskomponenttien kanssa, kuten LED, LCD, painike, DC-moottori, servomoottori, Askelmoottori, ADC, shift Register jne. Olemme myös julkaisi joitain yksinkertaisia Raspberry Pi -projekteja aloittelijoille sekä hyviä IoT-hankkeita. Tänään, näiden opetusohjelmien jatkuessa, siirrymme Raspberry Pi: n ohjaamaan 8x8 LED -matriisimoduulia. Kirjoitamme python-ohjelman näyttämään merkkejä matriisimoduulissa.
Tarkista myös Interfacing 8x8 LED Matrix with Arduino ja LED Matrix with AVR Microcontorller.
Vaaditut komponentit:
Tässä käytämme Raspberry Pi 2 -mallia B Raspbian Jessie -käyttöjärjestelmän kanssa. Kaikista laitteisto- ja ohjelmistovaatimuksista on keskusteltu aiemmin, voit etsiä niitä Raspberry Pi -esittelystä ja Vadelma PI -merkkivalo vilkkuu aloittaaksesi, paitsi mitä tarvitsemme:
- Vadelma Pi -levy
- Virtalähde (5v)
- 1000uF kondensaattori (kytketty virtalähteen yli)
- 1KΩ vastus (8 kpl)
8x8 LED-matriisimoduuli:
8 * 8 LED-matriisimoduuli sisältää 64 LED-valoa (valodiodit), jotka on järjestetty matriisin muotoon, joten nimi on LED-matriisi. Näitä pienikokoisia moduuleja on saatavana erikokoisina ja monivärisinä. Voit valita ne mukavuuden mukaan. Moduulin PIN-kokoonpano on kuvan mukainen. Muista, että moduulin pinoutit eivät ole kunnossa, joten PIN-koodit tulee numeroida täsmälleen kuvan osoittamalla tavalla virheiden välttämiseksi.
LED Matrix -moduulissa on 8 + 8 = 16 yhteistä päätettä. Niiden yli meillä on 8 yhteistä positiivista päätelaitetta ja 8 yhteistä negatiivista päätelaitetta, 8 rivin ja 8 sarakkeen muodossa, 64 LEDin liittämiseksi matriisimuodossa. Jos moduuli piirretään piirikaavion muodossa, meillä on alla oleva kuva:
Joten 8 rivillä meillä on 8 yhteistä positiivista päätettä (9, 14, 8, 12, 17, 2, 5). Tarkastellaan ensimmäistä riviä: LEDeillä D1 - D8 on yhteinen positiivinen napa ja tappi tuodaan esiin LED Matrix -moduulin PIN9: ssä. Kun haluamme yhden tai kaikkien RIV: n LEDien olevan päällä, vastaavan LED-moduulin nastan tulisi olla kytkettynä + 3,3 V: lla.
Kuten tavallisissa positiivisissa päätelaitteissa, sarakkeina on 8 yhteistä negatiivista päätettä (13, 3, 4, 10, 6, 11, 15, 16). Minkä tahansa sarakkeen LEDin maadoittamiseksi vastaava maadoitettava yhteinen negatiivinen napa.
Piirin selitys:
Raspberry Pi: n ja LED-matriisimoduulin väliset yhteydet on esitetty alla olevassa taulukossa.
LED-matriisimoduulin tappi nro. |
Toiminto |
Raspberry Pi GPIO Pin No. |
13 |
Positiivinen0 |
GPIO12 |
3 |
Positiivinen 1 |
GPIO22 |
4 |
POSITIIVINEN2 |
GPIO27 |
10 |
POSITIIVINEN 3 |
GPIO25 |
6 |
Positiivinen 4 |
GPIO17 |
11 |
Positiivinen 5 |
GPIO24 |
15 |
Positiivinen 6 |
GPIO23 |
16 |
POSITIIVINEN7 |
GPIO18 |
9 |
NEGATIIVINEN0 |
GPIO21 |
14 |
NEGATIIVINEN 1 |
GPIO20 |
8 |
Negatiivinen 2 |
GPIO26 |
12 |
NEGATIIVINEN 3 |
GPIO16 |
1 |
Negatiivinen 4 |
GPIO19 |
7 |
Negatiivinen 5 |
GPIO13 |
2 |
Negatiivinen 6 |
GPIO6 |
5 |
Negatiivinen 7 |
GPIO5 |
Tässä on 8x8 LED-matriisin ja Raspberry Pi -liitännän lopullinen kytkentäkaavio:
Työselitys:
Tässä käytämme multipleksointitekniikkaa merkkien näyttämiseen 8x8 LED-matriisimoduulissa. Joten keskustellaan tästä multipleksoinnista yksityiskohtaisesti. Oletetaan, että haluamme kytkeä LED D10: n päälle matriisissa, meidän on kytkettävä päälle moduulin PIN14 ja maadoitettava moduulin PIN3. Tällä LEDillä D10 syttyy, kuten alla olevassa kuvassa on esitetty. Tämä tulisi myös tarkistaa ensin, jotta MATRIX tietää kaiken olevan kunnossa.
Sano nyt, jos haluamme käynnistää D1: n, meidän on kytkettävä päälle matriisin PIN9 ja maadoitettava PIN13. Tällöin LED D1 palaa. Nykyinen suunta tässä tapauksessa on esitetty alla olevassa kuvassa.
Katsokaa nyt hankalasta osasta, että haluamme käynnistää sekä D1: n että D10: n samanaikaisesti. Joten meidän pitäisi virtaa sekä PIN9, PIN14 että maadoittaa molemmat PIN13, PIN3. Tämä sytyttää LEDit D1 ja D10, mutta samaan aikaan syttyy myös LEDit D2 ja D9. Se johtuu siitä, että niillä on yhteiset päätteet. Joten jos haluamme kytkeä LEDit päälle diagonaalissa, meidän on pakko sytyttää kaikki LEDit matkan varrella. Tämä näkyy alla olevassa kuvassa:
Tämän ongelman välttämiseksi käytämme tekniikkaa nimeltä multipleksointi. Olemme myös keskustelleet tästä multipleksointitekniikasta samalla kun liitämme 8x8 LED-matriisin AVR: n kanssa, tässä selitämme uudelleen. Tätä samaa multipleksointitekniikkaa käytetään myös tekstin vierittämisessä 8x8 LED-matriisissa Arduinon ja AVR-mikrokontrollerin kanssa.
Ihmissilmä ei voi kaapata yli 30 Hz: n taajuutta. Eli jos LED palaa ja sammuu jatkuvasti nopeudella 30 Hz tai enemmän. Silmä näkee LEDin jatkuvasti päällä. Näin ei kuitenkaan ole, ja LED palaa ja sammuu jatkuvasti. Tätä tekniikkaa kutsutaan multipleksoinniksi.
Oletetaan esimerkiksi, että haluamme kytkeä päälle vain LED D1 ja LED D10 kytkemättä päälle D2 ja D9. Temppu on, toimitamme ensin virtaa vain LED D1: lle PIN 9: n ja 13: n avulla ja odotamme 1 mSEC: n, ja sitten sammutamme sen. Sitten annamme virran LED D10: lle PIN 14: n ja 3: n avulla ja odotamme 1 mSEC: n, sitten sammutamme sen. Sykli kulkee jatkuvasti suurilla taajuuksilla, ja D1 ja D10 palaavat ja sammuvat nopeasti, ja molemmat LEDit näyttävät olevan jatkuvasti päällä silmässämme. Tarkoitamme, että toimitamme virtaa vain yhdelle riville (LED) kerrallaan, mikä eliminoi mahdollisuudet kytkeä muut LEDit muihin riveihin. Käytämme tätä tekniikkaa kaikkien merkkien näyttämiseen.
Voimme ymmärtää sen edelleen yhdellä esimerkillä, kuten jos haluamme näyttää "A" matriisissa, kuten alla on esitetty:
Kuten kerrottiin, kytkemme yhden rivin PÄÄLLE hetkessä, Kun t = 0m SEC, PIN09 asetetaan HIGH (muut ROW-nastat ovat tällä hetkellä MATALA) tällä hetkellä, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 maadoitetaan (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Kun t = 1m SEC, PIN14 asetetaan HIGH (muut ROW-nastat ovat LOW tällä hetkellä) tällä hetkellä, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 maadoitetaan (muut COLUMN-nastat ovat KORKEAA tällä hetkellä)
Kun t = 2m SEC, PIN08 asetetaan HIGH (muut ROW-nastat ovat MATALA tällä hetkellä), PIN13, PIN3, PIN15, PIN16 maadoitetaan (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Kun t = 3m SEC, PIN12 asetetaan HIGH-arvoksi (muut ROW-nastat ovat LOW tällä hetkellä), PIN13, PIN3, PIN15, PIN16 maadoitetaan (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Kun t = 4m SEC, PIN01 asetetaan HIGH (muut ROW-nastat ovat tällä hetkellä MATALA) tällä hetkellä, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 on maadoitettu (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Kun t = 5m SEC, PIN07 asetetaan HIGH (muut ROW-nastat ovat MATALA tällä hetkellä), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 maadoitetaan (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Kun t = 6m SEC, PIN02 asetetaan HIGH (muut ROW-nastat ovat MATALA tällä hetkellä), PIN13, PIN3, PIN15, PIN16 maadoitetaan (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Kun t = 7m SEC, PIN05 asetetaan HIGH (muut ROW-nastat ovat MATALA tällä hetkellä), PIN13, PIN3, PIN15, PIN16 maadoitetaan (muut COLUMN-nastat ovat KORKEAT tällä hetkellä)
Tällä nopeudella näyttö näkyy jatkuvana A-merkkinä kuvan osoittamalla tavalla.
Python ohjelma näytetään Merkkien LED Matrix käyttäen Raspberry Pi on alla. Ohjelma on selitetty hyvin kommenteilla. Kunkin merkin porttiarvot annetaan ohjelmassa. Voit näyttää haluamasi merkit muuttamalla vain 'pinp' -arvoja tietyn ohjelman 'for loops' -kohdassa . Tarkista myös alla oleva esittelyvideo.