Paso 10: Firmware - parte 3: funcionamiento del controlador
El código fuente completo está disponible en este repositorio de GitHub.
Como he dicho antes, este controlador de matrix es en realidad parte de un proyecto más grande. Así, el circuito está configurado para actuar como un esclavo de bus de TWI (I2C). El actual código ejecutará la secuencia de la persecución de predeterminada (un par de caras sonrientes), a la espera de más instrucciones del autobús TWI. En el proyecto más grande, un byte de datos se envía con cada bit del byte que representa un superoderecho de la matriz para permitir. Una vez recibida la información, se activa la secuencia LOOP_QUADS . Esto simplemente recorre todos los colores posibles definidos en modules/macros/color_8bit.h, mostrando los colores en que cuadrantes de la matriz están habilitados. Si no recibe información después de tanto tiempo (aproximadamente 10 segundos), las matrices de volver a la secuencia predeterminada de chase (un par de caras sonrientes).
Se maneja toda la operación de TWI de la rutina de servicio de Interrrupt de TWI. Aunque el ISR sólo espera un byte de datos, será trivial fácil de modificar este código para manejar más bytes de datos. Hacerlo permitiría control externo sobre todos los aspectos del controlador de la matriz incluyendo ajuste de colores de LED individuales, secuencias de persecución o incluso inactivo display!