Similar a esta pregunta aquí: ¿Conectando varios LED RGB mientras usa un número mínimo de pines PWM en un Arduino?
Quiero controlar unos 800 rgb LED (800x señales rojas, 800x verdes, 800x azules), pero a diferencia de lo que se formuló esa pregunta, debo hacerlo a nivel individual. Por ejemplo, con mis requisitos de diseño, podría encender 1 led verde y el resto rojo, donde los LED serían idénticos en color a la otra pregunta.
Mi primer pensamiento fue usar los LED dirigidos por i2c, pero no encontré tal cosa en el mercado.
Entonces pensé usar registros de desplazamiento para pinchar en pwm usando múltiples pines. El aspecto negativo de esto es que es un registro de cambio , lo que significa que la integridad de la señal pwm se verá comprometida a medida que los bits cambien.
Entonces, se me ocurrieron las matrices de multiplexación de entrada serie. La idea sería que un pin sería el pin del reloj, que complementa los chips mux 300x de 8 bits. Estos chips mux tendrían cada uno la línea de reloj universal (CLK) y una línea de datos (D1, D2 ... Dx) única para el chip mux. Como el CLK oscilaría 8 veces, cada uno de los pines Dx emitiría 1 byte de serie (1 bit por ciclo CLK), representando el estado actual de los 8 colores de LED que controla. La idea parece ser mejor que la primera, porque no hay compromiso de señal, y porque hay x veces más ancho de banda teórico que el anterior. La caída aquí está en el costo. 300 chips no es barato.
Mis ojos luego se dirigieron a la PCA9685 . tiene su propio controlador pwm, está controlado por i2c y tiene 16 salidas pwm. La salida pwm significa que el controlador no tiene que usar eso. Esto significa que cada chip puede controlar 2 veces más LEDs, lo que significa que solo tendría que comprar la mitad de los chips que haría si fuera por la ruta mux (150) . Esto viene con el inconveniente obvio de que el chip en sí solo puede evaluarse en 64 direcciones únicas. Esto significa que necesitaría 3 buses i2c para soportar todos mis chips. Esto todavía es posible, ya que requeriría 4 pines, 1 reloj universal y 3 líneas de datos. Mucho menos que la ruta mux.
Finalmente, me di cuenta de que la empresa adafruit logra controlar miles de LED en una interfaz de 16 hilos () con "12 pestañas de 16 bits". Además, dice que el dispositivo es chainable, de modo que las pantallas se pueden expandir a través del encadenamiento.
¿Cuál es la forma ideal de controlar muchos LED RGB en un nivel individual?