En la electrónica para el consumidor final, existen los LEDs que pueden ponerse en cualquier tono en Rojo, Verde y Azul; RGB como se conoce normalmente. Se pueden manejar estos pequeños foquitos de forma tal que se pongan en una matriz y a través de un multiplexor, por ejemplo, usando un microcontrolador, se pueda tener control sobre mallas de LEDs RGB y hacer que generen luz del color que queramos, que en realidad es la combinación de los tres colores primarios RGB.
Pero desde luego, el problema a enfrentar es cuál será el tamaño máximo de una malla de LEDs RGB que pueda ser construidas. Las matrices gigantescas de LEDs son en general difíciles de construir por dos razones: por una parte, se necesita mucha energía, con los consecuentes problemas de generación de calor, y además, el poder controlar muchos LEDs no es nunca simple, sobre todo cuando su número empieza a crecer.
Luís Rafael dos Santos Afonso, un brasileño aficionado a la electrónica digital, decidió encarar este problema usando un microcontrolador ARM Cortex M4. La ventaja de usar este tipo de chips es que contienen todos DMA (Direct Memory Access), haciendo que las transferencias de la memoria a los periféricos se hagan de manera muy rápida.
El microcontrolador que usa Luis soporta solamente 1024 transferencias por cada conjunto, haciendo que se puedan transferir hasta 14 LEDs cada vez. Esto no es mucho, pero Luis resolvió el problema usando un modo llamado “ping-pong” en el controlador DMA cambiando las estructuras de datos para cada petición DMA. Así, básicamente está extendiendo el número de LEDs que switchea entre dos regiones de memoria y haciendo entrar el modo de transferencia DMA.
El resultado es mucho mejor que el circuito original de Luis, el cual era un conjunto de líneas SPI. Además de todo, se ve bien, como lo constata el video que sigue:
No es la matriz de LEDs gigante que esperábamos, pero si se quiere tener una probadita de cómo sería ésta, véase la matriz de 1.80 x 1.20 m (aproximadamente) que se está manejando.
Referencias: