Paso 50: Software: Cómo funciona
Comunicación entre estos dos pasa a través de una matriz de voxel. Esta matriz tiene un poco de cada LED en el cubo del LED. Nos referiremos a esto como el conjunto de cubo o cubo búfer de ahora en adelante.
La matriz del cubo se hace de 8 x 8 bytes. Puesto que cada byte es 8 bits, esto nos da un búfer de 8 voxels amplia, 8 woxels de alto y 8 voxels profundos (profundidad 1 byte).
cubo de volátiles unsigned char [8] [8];
El Lee rutina de interrupción del cubo de arsenal en dado intervalos y muestra la información en el cubo del LED.
Las funciones de efecto escribe los Estados LED deseados en esta matriz.
No utilizamos ninguna sincronización o doble búfer, ya que existe sólo un productor (ya sea los efectos actualmente en ejecución, o entrada de RS232) y un consumidor (el interrupción-código que actualiza el cubo). Esto significa que algunos voxels podría ser la siguiente o anterior "marco", pero esto no es un problema, puesto que la velocidad de fotogramas es tan alta.
Cuando se trabaja con micro controladores, tamaño del código es fundamental. Para guardar el tamaño del código y programación de obra y para hacer el código más fácil de leer, hemos tratado de escribir código reutilizable tantas veces como sea posible.
El código del cubo de LED tiene una base de bajo nivel funciones de dibujo que son utilizados por las funciones superiores de nivel de efecto. Las funciones de drenaje pueden encontrarse en draw.c. Dibujar funciones incluyen todo, desde establecer o quitar un único voxel para dibujar líneas y cuadros de alambre.