Hay varios métodos que se pueden usar para controlar una gran cantidad de LED desde unos pocos pines IO.
El más simple es el multiplexado de visualización de fila / columna estándar. Con esta técnica, puede conducir \ $ (n / 2) ^ 2 \ $ LED con \ $ n \ $ IO pins. Matemáticamente, el ciclo de trabajo es:
$$ \ frac {1} {mínimo (\ text {patrones de fila únicos, patrones de columna únicos})} $$
Esto significa que esta técnica tiene un ciclo de trabajo del 100% cuando todos los LED están encendidos (o todas las filas o todas las columnas son idénticas) y un ciclo de trabajo de \ $ 1 / n \ $ cuando se necesita iluminar una línea diagonal ( o todas las filas son diferentes). Solo se le garantiza un ciclo de trabajo del 100% cuando se encienden todos los LED o un LED (o cero LED, pero eso realmente no cuenta mucho).
Un poco más complejo es Charlieplexing . Con esta técnica, puede conducir \ $ n ^ 2 - n \ $ LED con \ $ n \ $ IO pins. Solo \ $ n - 1 \ $ LEDs pueden encenderse simultáneamente con esta técnica. Matemáticamente, el ciclo de trabajo es:
$$ \ frac {1} {\ text {conjuntos simultáneos mínimos}} $$
donde un conjunto simultáneo es un grupo único de LED que tiene un ánodo común o un cátodo común. (Esto no se ha demostrado, es justo a lo que llegué después de reflexionar sobre el problema por un minuto. Si el ciclo de trabajo es importante para usted, querrá verlo más a fondo). Este es un cálculo mucho más complejo tanto intelectualmente y computacionalmente que el cálculo equivalente para multiplexación estándar. Efectivamente, obtiene un ciclo de trabajo de \ $ 1 / n \ $ cuando todos los LED están encendidos pero algunos (solo algunos) patrones de n-1 o menos LED pueden tener un ciclo de trabajo del 100%. Solo se le garantiza un ciclo de trabajo del 100% cuando se enciende 1 LED.
El último método que mencionaré es usar un registro de cambios o IO expansor. Con dos pines (ya sea la interfaz de reloj / datos sin procesar, I2C o SPI unidireccional), puede controlar un número arbitrariamente grande de LED. El ciclo de trabajo para cualquier patrón es del 100%, pero la tasa de actualización es inversamente proporcional al número de LED. Este es el método más costoso. Para 15 LED, probablemente será más barato simplemente actualizar a un micro con tantos pines IO.