Kami telah membuat satu siri Tutorial Raspberry Pi, di mana kami telah merangkumi Interfacing Raspberry Pi dengan semua komponen asas seperti LED, LCD, butang, motor DC, Servo Motor, Stepper Motor, ADC, shift Register, dll. Kami juga mempunyai menerbitkan beberapa projek Raspberry Pi sederhana untuk pemula, bersama dengan beberapa projek IoT yang baik. Hari ini, sebagai lanjutan dari tutorial ini, kita akan Mengendalikan Modul Matriks 8x8 LED oleh Raspberry Pi. Kami akan menulis program python untuk menunjukkan watak pada modul matriks.
Periksa juga Interfacing 8x8 LED Matrix dengan Arduino dan LED Matrix dengan AVR Microcontorller.
Komponen yang Diperlukan:
Di sini kita menggunakan Raspberry Pi 2 Model B dengan OS Raspbian Jessie. Semua keperluan asas Perkakasan dan Perisian dibincangkan sebelumnya, anda boleh mencarinya dalam Pengenalan Raspberry Pi dan LED Berkedip Raspberry PI untuk memulakan, selain daripada yang kita perlukan:
- Papan Raspberry Pi
- Bekalan kuasa (5v)
- Kapasitor 1000uF (disambungkan merentasi bekalan kuasa)
- Perintang 1KΩ (8 keping)
Modul Matriks LED 8x8:
Modul matriks 8 * 8 LED mengandungi 64 LED (Light Emitting Diodes) yang disusun dalam bentuk matriks, oleh itu namanya adalah LED matriks. Modul padat ini terdapat dalam pelbagai saiz dan pelbagai warna. Seseorang boleh memilihnya mengikut keselesaan. Konfigurasi PIN modul adalah seperti yang ditunjukkan dalam gambar. Perlu diingat bahawa, pin modul tidak teratur sehingga PIN harus diberi nombor tepat seperti yang ditunjukkan dalam gambar untuk mengelakkan kesalahan.
Terdapat 8 + 8 = 16 terminal biasa dalam modul LED Matrix. Di atasnya, kami mempunyai 8 terminal positif biasa dan 8 terminal negatif biasa, dalam bentuk 8 baris dan 8 lajur, untuk menghubungkan 64 LED dalam bentuk matriks. Sekiranya modul dilukis dalam bentuk gambarajah litar, kita akan mempunyai gambar seperti gambar di bawah:
Jadi untuk 8 baris, kami mempunyai 8 Terminal Positif Biasa (9, 14, 8, 12, 17, 2, 5). Pertimbangkan baris pertama, LED dari D1 hingga D8 mempunyai terminal positif yang sama dan pin dibawa keluar pada PIN9 modul LED Matrix. Apabila kita mahu satu atau semua LED dalam ROW menyala, pin MODUL LED yang sesuai harus dihidupkan dengan + 3.3v.
Sama seperti terminal positif biasa, kami mempunyai 8 Terminal Negatif Umum sebagai lajur (13, 3, 4, 10, 6, 11, 15, 16). Untuk membumikan mana-mana LED di lajur mana-mana terminal negatif umum yang akan dibumikan.
Penjelasan Litar:
Sambungan yang dilakukan antara modul Raspberry Pi dan matriks LED ditunjukkan dalam jadual di bawah.
Modul Matrik LED Pin no. |
Fungsi |
Pin Raspberry Pi GPIO No. |
13 |
POSITIF0 |
GPIO12 |
3 |
POSITIF1 |
GPIO22 |
4 |
POSITIF2 |
GPIO27 |
10 |
POSITIF3 |
GPIO25 |
6 |
POSITIF4 |
GPIO17 |
11 |
POSITIVE5 |
GPIO24 |
15 |
POSITIF6 |
GPIO23 |
16 |
POSITIF7 |
GPIO18 |
9 |
NEGATIF0 |
GPIO21 |
14 |
NEGATIF1 |
GPIO20 |
8 |
NEGATIF2 |
GPIO26 |
12 |
NEGATIF3 |
GPIO16 |
1 |
NEGATIF4 |
GPIO19 |
7 |
NEGATIVE5 |
GPIO13 |
2 |
NEGATIF6 |
GPIO6 |
5 |
NEGATIF7 |
GPIO5 |
Berikut adalah gambarajah litar Akhir untuk Interfacing 8x8 LED Matrix dengan Raspberry Pi:
Penjelasan Kerja:
Di sini kita akan menggunakan Teknik Multipleksing untuk menunjukkan watak pada Modul Matriks 8x8 LED. Oleh itu, mari kita bincangkan mengenai multiplexing ini secara terperinci. Katakan jika kita ingin menghidupkan LED D10 dalam matriks, kita perlu menghidupkan PIN14 modul dan membumikan PIN3 modul. Dengan LED D10 ini akan menyala seperti yang ditunjukkan dalam gambar di bawah. Perkara ini juga harus diperiksa terlebih dahulu agar MATRIX mengetahui semuanya dalam keadaan teratur.
Sekarang, katakan jika kita ingin menghidupkan D1, kita perlu menghidupkan matriks PIN9 dan membumikan PIN13. Dengan itu LED D1 akan menyala. Arah semasa dalam kes ini ditunjukkan dalam gambar di bawah.
Sekarang untuk bahagian yang sukar, anggaplah kita mahu menghidupkan D1 dan D10 pada masa yang sama. Oleh itu, kita harus menghidupkan kedua-dua PIN9, PIN14 dan meletakkan kedua-dua PIN13, PIN3. Ini akan menghidupkan LED D1 dan D10, tetapi bersamaan itu juga akan menyalakan LED D2 dan D9. Ini kerana mereka berkongsi terminal biasa. Oleh itu, jika kita mahu menyalakan LED sepanjang pepenjuru, kita akan terpaksa menyalakan semua LED sepanjang perjalanan. Ini ditunjukkan dalam rajah di bawah:
Untuk mengelakkan masalah ini, kami menggunakan teknik yang disebut Multiplexing. Kami juga telah membincangkan Teknik Multipleksing ini semasa menghubungkan Matriks LED 8x8 dengan AVR, di sini kami menerangkan lagi. Teknik multiplexing yang sama ini juga digunakan dalam Scrolling Text pada matriks LED 8x8 dengan Arduino dan dengan mikrokontroler AVR.
Mata manusia tidak dapat menangkap frekuensi melebihi 30 HZ. Iaitu jika LED menyala dan mati secara berterusan pada kadar 30HZ atau lebih. Mata melihat LED terus menyala. Walau bagaimanapun, ini tidak berlaku dan LED akan terus hidup dan mati secara berterusan. Teknik ini dipanggil Multiplexing.
Katakan sebagai contoh, kita hanya mahu menghidupkan LED D1 dan LED D10 tanpa menghidupkan D2 dan D9. Caranya, pertama-tama kita akan memberikan kuasa kepada LED D1 hanya menggunakan PIN 9 & 13 dan menunggu 1mSEC, dan kemudian kita akan mematikannya. Kemudian kami akan memberi kuasa kepada LED D10 menggunakan PIN 14 & 3 dan menunggu 1mSEC kemudian akan mematikannya. Kitaran ini berterusan secara berterusan dengan frekuensi tinggi dan D1 & D10 akan Hidup dan Mati dengan pantas dan kedua-dua LED akan terus menyala ke mata kita. Bermakna kami hanya memberikan kekuatan pada satu baris (LED) pada satu masa, menghilangkan kemungkinan menyalakan LED lain di baris lain. Kami akan menggunakan teknik ini untuk menunjukkan semua watak.
Kita dapat memahaminya lebih jauh dengan satu contoh, seperti jika kita ingin memaparkan “A” pada matriks, seperti yang ditunjukkan di bawah:
Seperti yang diberitahu kita akan menghidupkan satu baris dalam sekejap, Pada t = 0m SEC, PIN09 ditetapkan TINGGI (pin ROW lain RENDAH pada masa ini) pada masa ini, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 dibumikan (pin COLUMN lain TINGGI pada masa ini)
Pada t = 1m SEC, PIN14 ditetapkan TINGGI (pin ROW lain RENDAH pada masa ini) pada masa ini, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 dibumikan (pin COLUMN lain yang TINGGI pada masa ini)
Pada t = 2m SEC, PIN08 ditetapkan TINGGI (pin ROW lain RENDAH) pada masa ini, PIN13, PIN3, PIN15, PIN16 dibumikan (pin COLUMN lain adalah TINGGI pada masa ini)
Pada t = 3m SEC, PIN12 ditetapkan TINGGI (pin ROW lain RENDAH pada masa ini) pada masa ini, PIN13, PIN3, PIN15, PIN16 dibumikan (pin COLUMN lain adalah TINGGI pada masa ini)
Pada t = 4m SEC, PIN01 ditetapkan TINGGI (pin ROW lain RENDAH pada masa ini) pada masa ini, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 dibumikan (pin COLUMN lain yang TINGGI pada masa ini)
Pada t = 5m SEC, PIN07 ditetapkan TINGGI (pin ROW lain RENDAH) pada masa ini, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 dibumikan (pin COLUMN lain yang TINGGI pada masa ini)
Pada t = 6m SEC, PIN02 ditetapkan TINGGI (pin ROW lain RENDAH pada masa ini) pada masa ini, PIN13, PIN3, PIN15, PIN16 dibumikan (pin COLUMN lain adalah TINGGI pada masa ini)
Pada t = 7m SEC, PIN05 ditetapkan TINGGI (pin ROW lain RENDAH pada masa ini) pada masa ini, PIN13, PIN3, PIN15, PIN16 dibumikan (pin COLUMN lain adalah TINGGI pada masa ini)
Pada kelajuan ini, paparan akan dilihat terus menerus menunjukkan karakter "A" seperti yang ditunjukkan pada gambar.
The Program Python untuk menunjukkan Watak pada LED Matrix menggunakan Raspberry Pi diberikan di bawah. Program dijelaskan dengan baik melalui komen. Nilai Port untuk setiap watak diberikan dalam program. Anda boleh menunjukkan watak apa sahaja yang anda mahukan dengan hanya menukar nilai 'pinp' di 'for loop' dalam program yang diberikan. Lihat juga Video Demo di bawah.