Ada beberapa metode yang dapat digunakan untuk menggerakkan sejumlah besar LED dari beberapa pin IO.
Yang paling sederhana adalah multiplexing tampilan baris / kolom standar. Dengan teknik ini, Anda dapat mengendarai LED dengan n pin IO. Secara matematis, siklus kerjanya adalah:(n/2)2n
1minimum(unique row patterns, unique column patterns)
Ini berarti bahwa teknik ini memiliki siklus tugas 100% ketika semua LED menyala (atau semua baris atau semua kolom identik) dan siklus tugas ketika garis diagonal perlu dinyalakan (atau semua baris berbeda ). Anda hanya dijamin 100% siklus kerja saat menyalakan setiap LED atau satu LED (atau nol LED, tapi itu tidak terlalu berarti).1/n
Sedikit lebih kompleks adalah Charlieplexing . Dengan teknik ini, Anda dapat mengarahkan LED dengan n IO pin. Hanya n - 1 LED yang dapat menyala bersamaan dengan teknik ini. Secara matematis, siklus kerjanya adalah:n2−nnn−1
1minimum simultaneous sets
di mana satu set simultan adalah sekelompok unik LED yang memiliki anoda umum atau katoda umum. (Ini belum terbukti, hanya saja saya tiba setelah merenungkan masalah sebentar. Jika siklus tugas penting bagi Anda, Anda akan ingin melihat lebih jauh ini.) Ini adalah perhitungan yang jauh lebih kompleks baik secara intelektual dan secara komputasi dari perhitungan yang setara untuk multiplexing standar. Secara efektif, Anda mendapatkan siklus kerja ketika semua LED menyala tetapi beberapa (hanya beberapa) pola n-1 atau lebih sedikit LED dapat memiliki siklus kerja 100%. Anda hanya dijamin 100% siklus kerja saat menyalakan 1 LED.1/n
Metode terakhir yang akan saya sebutkan adalah menggunakan shift register atau IO expander. Dengan dua pin (Baik antarmuka data mentah / jam, I2C, atau SPI searah), Anda dapat mengontrol sejumlah besar LED yang sewenang-wenang. Siklus tugas untuk pola apa pun adalah 100%, tetapi tingkat pembaruan berbanding terbalik dengan jumlah LED. Ini adalah metode yang paling mahal. Untuk 15 LED, mungkin akan lebih murah untuk hanya memutakhirkan ke mikro dengan banyak pin IO.