Charlieplexing adalah teknik mengontrol banyak LED menggunakan beberapa pin I / O. Charlieplexing sama dengan multiplexing, tetapi menggunakan logika tri-state (input tinggi, rendah) untuk mengurangi jumlah pin secara dramatis dan untuk mendapatkan efisiensi atas multiplexing. Teknik Charlieplexing dinamai menurut penemunya, Charlie Allen, yang menemukan teknik ini pada tahun 1995. Sebelumnya kami menggunakan teknik multiplexing di Arduino untuk menghubungkan tampilan 4-digit 7-segmen dan menggerakkan matriks LED 8x8.
Charlieplexing memungkinkan Anda untuk mengontrol N * (N - 1) LED, di mana N adalah jumlah pin. Misalnya, Anda dapat mengontrol 12 LED menggunakan 4 pin Arduino 4 * (4-1) = 12. LED adalah dioda, dan dioda, arus mengalir hanya dalam satu arah. Jadi di Charlieplexing, kami menghubungkan dua LED secara paralel satu sama lain tetapi dengan polaritas yang berlawanan sehingga hanya satu LED yang menyala pada satu waktu. Ketika datang ke Arduino atau papan mikrokontroler lainnya, Anda tidak pernah memiliki cukup pin input / output. Jika Anda mengerjakan proyek di mana Anda perlu antarmuka layar LCD, sekumpulan LED, dan beberapa sensor, maka Anda sudah kehabisan pin. Dalam situasi tersebut, Anda dapat menggunakan charlieplex LED untuk mengurangi jumlah pin.
Dalam tutorial ini, kita akan menggunakan teknik Charlieplexing untuk mengontrol 12 LED menggunakan 4 pin Arduino.
Komponen Diperlukan
- Arduino UNO
- LED (12)
- 4 Resistor (330 ohm)
- Kabel Jumper
- Papan tempat memotong roti
Diagram Sirkuit
Pada dasarnya, pada diagram rangkaian ini, 12 LED dihubungkan dengan 4 pin Arduino melalui resistor. Setiap pin Arduino dihubungkan dengan tiga LED. Ada enam grup LED, dan di setiap grup, 2 LED terhubung, dan kedua LED tersebut sejajar satu sama lain tetapi dengan polaritas yang berlawanan sehingga hanya satu LED yang menyala dalam satu waktu. Jadi sesuai diagram rangkaian untuk menyalakan led 1, perlu ada sinyal TINGGI pada pin A dan sinyal RENDAH pada pin B, dan pin C dan D perlu diputus. Prosedur yang sama akan diikuti untuk LED lainnya. Tabel lengkap pengaturan pin untuk setiap LED diberikan di bawah ini:
LED | Pin 8 | Pin 9 | Pin 10 | Pin 11 |
1 | TINGGI | RENDAH | MEMASUKKAN | MEMASUKKAN |
2 | RENDAH | TINGGI | MEMASUKKAN | MEMASUKKAN |
3 | MEMASUKKAN | TINGGI | RENDAH | MEMASUKKAN |
4 | MEMASUKKAN | RENDAH | TINGGI | MEMASUKKAN |
5 | MEMASUKKAN | MEMASUKKAN | TINGGI | RENDAH |
6 | MEMASUKKAN | MEMASUKKAN | RENDAH | TINGGI |
7 | TINGGI | MEMASUKKAN | RENDAH | MEMASUKKAN |
8 | RENDAH | MEMASUKKAN | TINGGI | MEMASUKKAN |
9 | MEMASUKKAN | TINGGI | MEMASUKKAN | RENDAH |
10 | MEMASUKKAN | RENDAH | MEMASUKKAN | TINGGI |
11 | TINGGI | MEMASUKKAN | MEMASUKKAN | RENDAH |
12 | RENDAH | MEMASUKKAN | MEMASUKKAN | TINGGI |
Setelah koneksi, perangkat keras saya terlihat seperti gambar di bawah ini. Seperti yang Anda lihat dari gambar, ada enam kelompok LED dan di setiap kelompok 2 LED dihubungkan berlawanan satu sama lain. Modul Arduino UNO didukung oleh port USB.
Penjelasan Kode
Kode lengkap dengan video kerja diberikan di akhir tutorial ini, di sini kami menjelaskan program lengkap untuk memahami kerja proyek.
Di awal kode Arduino tentukan semua pin di mana LED terhubung. Setelah itu, tentukan jumlah LED dan status led.
# Tentukan A 8 # Tentukan B 9 # Tentukan C 10 # Tentukan D 11 # Tentukan PIN_CONFIG 0 # Tentukan PIN_STATE 1 # Tentukan LED_Num 12
Sekarang buat matriks untuk menyalakan dan mematikan LED secara berurutan, Anda dapat mengubah urutan dengan mengubah status pin dan konfigurasi pin. Berdasarkan matriks ini, LED1 akan dihidupkan terlebih dahulu, kemudian LED2, dan seterusnya.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, RENDAH}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, ……………………………. ……………………………..
Sekarang di dalam void loop , program akan mengeksekusi matriks LED_COUNT untuk menghidupkan dan mematikan LED dalam urutan yang diberikan.
void loop () { for (int l = 0; l <LED_Num; l ++) { lightOn (l); penundaan (1000 / LED_Num); }
Sekarang hubungkan Arduino dengan laptop dan pilih papan dan port dengan benar lalu klik tombol Unggah. Setelah mengunggah kode, LED Anda akan mulai berkedip.
Jadi ini adalah bagaimana teknik Charlieplexing dapat digunakan untuk mengontrol banyak LED menggunakan lebih sedikit pin Arduino. Anda dapat menggunakan metode ini untuk mengontrol lebih banyak jumlah LED. Misalnya, jika Anda ingin mengontrol 20 LED, cukup edit matriksnya dan tambahkan kondisi untuk LED yang tersisa.
Temukan kode lengkap dan video kerja di bawah ini.