Lumikha kami ng isang serye ng Mga Tutorial sa Raspberry Pi, kung saan sakop namin ang Pag-interface ng Raspberry Pi sa lahat ng mga pangunahing sangkap tulad ng LED, LCD, pindutan, DC motor, Servo Motor, Stepper Motor, ADC, shift Rehistro, atbp. Mayroon din kaming nai-publish ang ilang mga simpleng proyekto ng Raspberry Pi para sa mga nagsisimula, kasama ang ilang magagandang proyekto ng IoT. Ngayon, bilang pagpapatuloy ng mga tutorial na ito, pupunta kami sa Control 8x8 LED Matrix Module ni Raspberry Pi. Susulat kami ng isang programa ng sawa upang ipakita ang mga character sa matrix module.
Suriin din ang Interfacing 8x8 LED Matrix na may Arduino at LED Matrix na may AVR Microcontorller.
Kinakailangan ang Mga Bahagi:
Narito ginagamit namin ang Raspberry Pi 2 Model B kasama ang Raspbian Jessie OS. Ang lahat ng pangunahing mga kinakailangan sa Hardware at Software ay dati nang tinalakay, maaari mo itong tingnan sa Panimula ng Raspberry Pi at Raspberry PI LED Blinking para sa pagsisimula, bukod sa kailangan namin:
- Lupon ng Raspberry Pi
- Suplay ng kuryente (5v)
- 1000uF capacitor (konektado sa buong power supply)
- 1KΩ risistor (8 piraso)
8x8 LED Matrix Module:
Ang isang module na 8 * 8 LED matrix ay naglalaman ng 64 LED (Light Emitting Diode) na nakaayos sa anyo ng isang matrix, samakatuwid ang pangalan ay LED matrix. Ang mga compact module na ito ay magagamit sa iba't ibang mga laki at maraming mga kulay. Maaaring mapili ng isa ang mga ito sa kaginhawaan. Ang pagsasaayos ng PIN ng module ay tulad ng ipinakita sa larawan. Tandaan na, ang mga pinout ng module ay wala sa pagkakasunud-sunod kaya ang mga PIN ay dapat na may bilang na eksaktong ipinakita sa larawan para maiwasan ang mga pagkakamali.
Mayroong 8 + 8 = 16 mga karaniwang terminal sa module ng LED Matrix. Sa kanila, mayroon kaming 8 karaniwang mga positibong terminal at 8 karaniwang mga negatibong terminal, sa anyo ng 8 mga hilera at 8 mga haligi, para sa pagkonekta sa 64 LED sa form ng matrix. Kung ang module ay iginuhit sa anyo ng circuit diagram magkakaroon kami ng isang larawan tulad ng ipinakita sa ibaba:
Kaya para sa 8 mga hilera, mayroon kaming 8 Mga Karaniwang Positive Terminal (9, 14, 8, 12, 17, 2, 5). Isaalang-alang ang unang hilera, ang mga LED mula sa D1 hanggang D8 ay may isang karaniwang positibong terminal at ang pin ay inilabas sa PIN9 ng LED Matrix module. Kapag nais namin ang isa o lahat ng mga LED sa isang ROW upang ma-ON, Ang kaukulang pin ng LED MODULE ay dapat na pinalakas ng + 3.3v.
Katulad ng mga karaniwang positibong terminal, mayroon kaming 8 Mga Karaniwang Negatibong Terminal bilang mga haligi (13, 3, 4, 10, 6, 11, 15, 16). Para sa saligan ng anumang LED sa anumang haligi ng kani-kanilang mga karaniwang negatibong terminal na ma-grounded.
Paliwanag sa Circuit:
Ang mga koneksyon na tapos sa pagitan ng Raspberry Pi at LED matrix module ay ipinapakita sa ibaba ng talahanayan.
LED Matrix Module Pin no. |
Pag-andar |
Raspberry Pi GPIO Pin No. |
13 |
POSITIBO0 |
GPIO12 |
3 |
POSITIBO1 |
GPIO22 |
4 |
POSITIVE2 |
GPIO27 |
10 |
POSITIVE3 |
GPIO25 |
6 |
POSITIVE4 |
GPIO17 |
11 |
POSITIVE5 |
GPIO24 |
15 |
POSITIF6 |
GPIO23 |
16 |
POSITIVE7 |
GPIO18 |
9 |
NEGATIVE0 |
GPIO21 |
14 |
NEGATIBA1 |
GPIO20 |
8 |
NEGATIBA2 |
GPIO26 |
12 |
NEGATIBA3 |
GPIO16 |
1 |
NEGATIBA4 |
GPIO19 |
7 |
NEGATIVE5 |
GPIO13 |
2 |
NEGATIBA6 |
GPIO6 |
5 |
NEGATIBA7 |
GPIO5 |
Narito ang pangwakas na diagram ng circuit para sa Interfacing 8x8 LED Matrix na may Raspberry Pi:
Paggawa ng Paliwanag:
Dito ay gagamitin namin ang Multiplexing Technique upang maipakita ang mga character sa 8x8 LED Matrix Module. Kaya't talakayin natin ang detalyadong pag-multiplex na ito. Sabihin kung nais nating i-on ang LED D10 sa matrix, kailangan naming i-power ang PIN14 ng module at ibagsak ang PIN3 ng module. Sa LED D10 na ito ay i-ON tulad ng ipinakita sa ibabang pigura. Dapat din itong suriin muna para malaman ng MATRIX na maayos ang lahat.
Ngayon, sabihin kung nais nating i-on ang D1, kailangan naming paandarin ang PIN9 ng matrix at ibagsak ang PIN13. Gamit ang LED D1 ay mamula. Ang kasalukuyang direksyon sa kasong ito ay ipinapakita sa ibaba ng pigura.
Ngayon para sa nakakalito na bahagi, isaalang-alang na nais naming i-on ang parehong D1 at D10 nang sabay. Kaya dapat nating paganahin ang parehong PIN9, PIN14 at i-ground ang parehong PIN13, PIN3. Bubuksan nito ang LED D1 at D10, ngunit kasama nito bubukas din ang LED D2 at D9. Dahil nagbabahagi sila ng mga karaniwang terminal. Kaya kung nais naming i-on ang mga LED kasama ang dayagonal, mapipilitan kaming i-ON ang lahat ng mga LED sa daan. Ipinapakita ito sa figure sa ibaba:
Upang maiwasan ang problemang ito, gumagamit kami ng diskarteng tinatawag na Multiplexing. Napag-usapan din namin ang Multiplexing Technique na ito habang nakikipag-ugnay sa 8x8 LED Matrix sa AVR, narito muli naming ipinapaliwanag. Ang parehong diskarteng multiplexing na ito ay ginagamit din sa Pag-scroll ng Teksto sa 8x8 LED matrix na may Arduino at may AVR microcontroller.
Ang mata ng tao ay hindi maaaring makuha ang isang dalas na higit sa 30 HZ. Iyon ay kung ang isang LED ay nagpapatuloy at NAKA-OFF nang tuluy-tuloy sa rate na 30HZ o higit pa. Ang mata ay nakikita ang LED na patuloy na ON. Gayunpaman hindi ito ang kaso at ang LED ay talagang magiging ON at OFF parating. Ang pamamaraang ito ay tinatawag na Multiplexing.
Sabihin nating halimbawa, nais naming i-on lamang ang LED D1 at LED D10 nang hindi binubuksan ang D2 at D9. Ang daya ay, bibigyan muna namin ang kapangyarihan sa LED D1 lamang gamit ang PIN 9 & 13 at maghintay para sa 1mSEC, at pagkatapos ay i-OFF namin ito. Pagkatapos ay magbibigay kami ng kapangyarihan sa LED D10 gamit ang PIN 14 & 3 at maghintay para sa 1mSEC pagkatapos ay i-OFF ito. Ang pag-ikot ay nagpapatuloy na may mataas na dalas at ang D1 & D10 ay mabilis na makakakuha ng On at Off at ang parehong mga LED ay lilitaw na patuloy na ON sa aming mata. Nangangahulugan lamang na nagbibigay kami ng lakas sa isang hilera (LED) nang paisa-isa, inaalis ang mga pagkakataong buksan ang iba pang mga LED sa iba pang mga hilera. Gagamitin namin ang diskarteng ito upang maipakita ang lahat ng mga character.
Maaari pa nating maintindihan ito sa pamamagitan ng isang halimbawa, tulad ng kung nais naming ipakita ang "A" sa matrix, tulad ng ipinakita sa ibaba:
Tulad ng sinabi sa amin ay i-ON ang isang hilera sa isang iglap, Sa t = 0m SEC, ang PIN09 ay nakatakda nang TAAS (ang iba pang mga ROW pin ay mababa sa oras na ito) sa oras na ito, ang PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 ay na-grounded (ang iba pang COLUMN pins ay TAAS sa oras na ito)
Sa t = 1m SEC, ang PIN14 ay nakatakda nang TAAS (ang iba pang mga ROW pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 ay pinagbatayan (ang iba pang mga COLUMN na pin ay TAAS sa oras na ito)
Sa t = 2m SEC, ang PIN08 ay nakatakda nang TAAS (ang iba pang mga ROW pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN15, PIN16 ay nakabatay (ang iba pang mga COLUMN na pin ay TAAS sa oras na ito)
Sa t = 3m SEC, ang PIN12 ay nakatakda nang TAAS (ang iba pang mga ROW na pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN15, PIN16 ay nakabatay (ang iba pang mga COLUMN na pin ay TAAS sa oras na ito)
Sa t = 4m SEC, ang PIN01 ay nakatakda nang TAAS (ang iba pang mga ROW na pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 ay pinagbatayan (iba pang mga COLUMN na pin ay HIGAS sa oras na ito)
Sa t = 5m SEC, ang PIN07 ay nakatakda nang TAAS (ang iba pang mga ROW pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 ay pinagbatayan (ang iba pang mga COLUMN na pin ay TAAS sa oras na ito)
Sa t = 6m SEC, ang PIN02 ay nakatakda nang TAAS (ang iba pang mga ROW pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN15, PIN16 ay nakabatay (ang iba pang mga COLUMN na pin ay TAAS sa oras na ito)
Sa t = 7m SEC, ang PIN05 ay nakatakda nang TAAS (ang iba pang mga ROW na pin ay mababa sa oras na ito) sa oras na ito, ang PIN13, PIN3, PIN15, PIN16 ay nakabatay (ang iba pang mga COLUMN na pin ay TAAS sa oras na ito)
Sa bilis na ito, ang display ay makikita bilang patuloy na nagpapakita ng "A" character tulad ng ipinakita sa figure.
Ang Python Program para sa pagpapakita ng Mga Character sa LED Matrix gamit ang Raspberry Pi ay ibinibigay sa ibaba. Maayos na ipinaliwanag ng programa sa pamamagitan ng mga komento. Ang Mga Halaga ng Port para sa bawat character ay ibinibigay sa programa. Maaari mong ipakita ang anumang mga character na nais mo sa pamamagitan lamang ng pagbabago ng mga halagang 'pinp' sa 'para sa mga loop' sa naibigay na programa. Suriin din ang Demo Video sa ibaba.