Puede considerar la matriz como tres matrices 8x8 que comparten los pines de la fila (ánodo común). Para conducir 1 matriz, usaría un demultiplexador de 3 a 8 para conducir una fila y tirar de los cátodos a la posición baja para los LED en esa fila que desea iluminar. Tenga en cuenta que las salidas del demultiplexador deben controlar hasta 8 LED en una matriz, e incluso hasta 24 LED en una matriz RGB. No pueden suministrar la corriente requerida, por lo que necesitará transistores para aumentar la corriente.
Para una matriz, esto requeriría 3 + 8 pines, lo cual está bien dentro de las capacidades de Arduino. Para 3 matrices, sin embargo, necesitarías 3 + 3 * 8 = 27 pines, y eso es demasiado.
Solución: en lugar de conectar los 8 cátodos directamente al Arduino, use un registro de desplazamiento bloqueado como el 74HC595. Solo requiere 3 pines (datos, reloj y latch) y puedes conectarlos en cascada, por lo que solo necesitas 3 + 3 pines de Arduino.
Algoritmo:
- Cambie 24 "1" s en los HC595 para apagar los LEDs
- trabe el HC595s
- seleccione la siguiente fila (siguiente valor binario para demultiplexer
- cambie los 24 bits para la nueva fila (8 rojo, 8 verde, 8 azul) en el HC595s
- enclavar los HC595 para activar los LEDs
- espere la próxima línea de escaneo, 1 ms es un buen momento