Paso 7: Codificación, un mejor ejemplo.
Mientras voy en bicicleta a través LED es una buena indicación que funciona, es algo aburrido...
El croquis adjunto muestra cómo puede configurar el código para mostrar los marcos específicos (donde cada fotograma se define como un montón de luces LED que está encendido o apagado).
La primera diferencia es que se reorganizan las variables en mi matriz de LED para asemejarse a la disposición en mi protoboard. Por desgracia, hay no hay truco aquí. Es solo prueba y error. Ver la secuencia de luces LED y dos a la vez para tratar de ordenar intercambiar.
Sin embargo, la principal diferencia es el método de visualización (cuadro de int [5], int duración). La mayor parte de es bastante evidente. Hay un montón de bucle para obtener todos los valores relevantes de los diferentes arreglos de discos, pero la única parte que suele ser confuso es aquí:
Si (marco [y] & (0b1000 >> x)) {}
luz c [y] [x];
Esencialmente esto está utilizando un AND bit a bit en un byte de Bitshifted para determinar si una columna en el cuadro es en. Cuando cambio a la derecha, 1 en 0B1000 se moverá a la derecha, así que lo que está haciendo es:
Asuma X = 0 y marco [y] = 0b0101:
0b1000 >> 0 es 0B1000
haciendo un AND bit a bit en
0B1000 y
0B0101
terminas con 0B0000 que significa que ningún LED se encenderá.
Si luego vas X = 1 y marco [y] = 0b0101:
0b1000 >> 1 es 0B0100
haciendo un AND bit a bit en
0B0100 y
0B0101
terminas con 0B0100 que significa enciende el segundo LED (y sólo el segundo LED) en fila Y.
Esencialmente, es un poco inteligente de las matemáticas para hacer el código más limpio. Usted puede leer más acerca de bit a bit matemáticas aquí:
http://www.Arduino.CC/Playground/Code/BitMath
El video muestra como cuando se ve.