Paso 2: multiplexación
La imagen en este paso muestra a un grupo de 9 LEDs, hay 3 filas y 3 columnas. Las filas y las columnas no importa qué orden están en o cuál es el ánodo/cátodo pero el hardware debe coincidir con el software! En el caso de la imagen la fila es el "dominante" sobre la columna. Lo que quiero decir por que si nos fijamos en los pasos, una fila está ajustada en on mientras que determinadas columnas se establecen en los LEDs de potencia. ¿Cómo se hace esto? Bien según el código que necesita para hacer una "dominante" lo hago por tener una función de fila que llama a una función de columna cada vez que cambia la fila.
Desde entonces hay 3 pasos y las imágenes finales dice "lo que ves", ¿cómo que funciona? Pues si el cambio está ocurriendo deja decir cada 1ms entonces el ojo humano no puede decir la diferencia, la misma medida una tasa de refresco o fotogramas por segundo trabajo en TV. Así que realmente sólo una fila de LEDs se encienden al mismo tiempo, pero a la vista parecen estar a la vez.
Relación de multiplexación mejora aún más cuando usted agrega más filas y columnas. dices que quieres una pantalla de 16 por 16, que es 256 LEDs. Con multiplexación es 16 filas, 16 columnas por lo que 32 pines para controlar 256 LEDs! 32 es todavía bastantes pernos Digital (Arduino sólo tiene 12...) pero es donde podría utilizar registros de desplazamiento con menos pines.
Ahora esto trae un problema, para ver constantemente esta imagen en que el código debe cambiar las filas cada pocos ms por lo que todas las filas parecen estar. Así no se puede utilizar cosas como retrasos con multiplexación. Desafortunadamente código Arduino parece dependen en gran medida retrasos... ¿La solución? utilizando uno de los Atmega328s contador de tiempo/contadores, en mi último ejemplo puede ver el código para implementar uno de los temporizadores.