Charlieplexing adalah teknik mengendalikan banyak LED menggunakan beberapa pin I / O. Charlieplexing sama dengan multiplexing, tetapi menggunakan logik tri-keadaan (input tinggi, rendah) untuk mengurangkan bilangan pin secara mendadak dan untuk mendapatkan kecekapan berbanding multiplexing. Teknik Charlieplexing dinamai penciptanya, Charlie Allen, yang mencipta teknik ini pada tahun 1995. Kami sebelumnya menggunakan teknik multiplexing di Arduino untuk menghubungkan paparan 4-segmen 7-digit dan mengemudi matriks 8x8 LED.
Charlieplexing membolehkan anda mengawal LED N * (N - 1), di mana N adalah nombor pin. Sebagai contoh, anda boleh mengawal 12 LED menggunakan 4 pin Arduino 4 * (4-1) = 12. LED adalah dioda, dan dalam dioda, arus mengalir hanya dalam satu arah. Oleh itu, dalam Charlieplexing, kami menghubungkan dua LED selari antara satu sama lain tetapi dengan kekutuban yang berlawanan sehingga hanya satu LED yang menyala pada satu masa. Ketika datang ke Arduino atau papan mikrokontroler lain, anda tidak pernah mempunyai pin input / output yang mencukupi. Sekiranya anda mengusahakan projek di mana anda memerlukan antara muka paparan LCD, sekumpulan LED, dan beberapa sensor, maka anda sudah kehabisan pin. Dalam keadaan itu, anda boleh menggunakan LED charlieplex untuk mengurangkan bilangan pin.
Dalam tutorial ini, kita akan menggunakan teknik Charlieplexing untuk mengawal 12 LED menggunakan 4 pin Arduino.
Komponen Diperlukan
- Arduino UNO
- LED (12)
- 4 Perintang (330 ohm)
- Wayar Pelompat
- Papan roti
Rajah Litar
Pada asasnya, dalam rajah litar ini, 12 LED disambungkan dengan 4 pin Arduino melalui perintang. Setiap pin Arduino disambungkan dengan tiga LED. Terdapat enam kumpulan LED, dan dalam setiap kumpulan, 2 LED disambungkan, dan kedua-dua LED adalah selari antara satu sama lain tetapi dengan kekutuban yang berlawanan sehingga hanya satu LED yang menyala pada satu masa. Oleh itu, mengikut gambarajah litar untuk menghidupkan led 1, perlu ada isyarat TINGGI pada pin A dan isyarat RENDAH pada pin B, dan pin C dan D perlu diputuskan. Prosedur yang sama akan diikuti untuk LED lain. Jadual lengkap tetapan pin untuk setiap LED diberikan di bawah:
LED | Pin 8 | Pin 9 | Pin 10 | Pin 11 |
1 | TINGGI | RENDAH | INPUT | INPUT |
2 | RENDAH | TINGGI | INPUT | INPUT |
3 | INPUT | TINGGI | RENDAH | INPUT |
4 | INPUT | RENDAH | TINGGI | INPUT |
5 | INPUT | INPUT | TINGGI | RENDAH |
6 | INPUT | INPUT | RENDAH | TINGGI |
7 | TINGGI | INPUT | RENDAH | INPUT |
8 | RENDAH | INPUT | TINGGI | INPUT |
9 | INPUT | TINGGI | INPUT | RENDAH |
10 | INPUT | RENDAH | INPUT | TINGGI |
11 | TINGGI | INPUT | INPUT | RENDAH |
12 | RENDAH | INPUT | INPUT | TINGGI |
Selepas penyambungan perkakasan saya kelihatan seperti gambar di bawah. Seperti yang anda lihat dari gambar terdapat enam kumpulan LED dan dalam setiap kumpulan 2 LED disambungkan satu sama lain. Modul Arduino UNO dikuasakan oleh port USB.
Penjelasan Kod
Kod lengkap dengan video berfungsi diberikan pada akhir tutorial ini, di sini kami menerangkan program lengkap untuk memahami cara kerja projek.
Pada permulaan kod Arduino tentukan semua pin di mana LED disambungkan. Selepas itu, tentukan jumlah LED dan keadaan dipimpin.
#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 menghidupkan dan mematikan LED secara berurutan, anda boleh mengubah urutan dengan mengubah keadaan 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}, {TINGGI, RENDAH, RENDAH, RENDAH}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {RENDAH, TINGGI, RENDAH, RENDAH}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {RENDAH, TINGGI, RENDAH, RENDAH}}, ……………………………. ……………………………..
Sekarang di dalam gelung kekosongan , program akan menjalankan matrik LED_COUNT untuk menghidupkan dan mematikan LED dalam urutan yang diberikan.
gelung void () { untuk (int l = 0; l <LED_Num; l ++) { lightOn (l); kelewatan (1000 / LED_Num); }
Sekarang sambungkan Arduino dengan komputer riba dan pilih papan dan port dengan betul dan kemudian klik butang Muat naik. Selepas memuat naik kod, LED anda akan mula berkelip.
Jadi ini adalah bagaimana teknik Charlieplexing dapat digunakan untuk mengendalikan banyak LED menggunakan pin Arduino yang lebih sedikit. Anda boleh menggunakan kaedah ini untuk mengawal lebih banyak bilangan LED. Sebagai contoh, jika anda ingin mengawal 20 LED, hanya edit matriks dan tambahkan syarat untuk tinggal LED.
Cari kod lengkap dan video kerja di bawah.