Paso 15: Programa Resumen
Para este programa, he intentado seguir libremente el paradigma modelo-vista-controlador. Todo lo que significa es que mantengo la información sobre el modelo--información sobre lo que debería ser el estado y actualizarlo, separado de la vista, que muestra información sobre el cubo. El sketch de Arduino principal actúa como el regulador, pasando información del modelo a la vista a mostrar.
Que va escribiendo un montón de clases para hacer un programa orientado a objetos limpios. Arduino trata estas clases como las bibliotecas. Antes de llegar al programa principal, a hablar un par de esas bibliotecas.
Pulsador:
Un pulsador se ocupa de conseguir la entrada de los interruptores de pulsador en la parte frontal del cubo. Dile qué pin del circuito pulsador es conectado a, y entonces usted puede pedir si se ha presionado o liberado desde última vez lo.
Rutina:
Un objeto rutina es responsable de calcular lo que debería ser el cubo de visualización de cada vuelta. Se dice repetidamente para actualizar su estado basado en la cantidad de tiempo que ha pasado desde que el último fue dicho para actualizar. Podemos extender la rutina y reemplazar el método de actualización para hacer nuevas rutinas para el cubo. Las rutinas tienen un 3D array de booleanos que representa el estado actual del cubo. La rutina no la exhibición real de la matriz en el cubo. Corresponde a la CubeView.
CubeView:
Un CubeView se encarga de mostrar una matriz 3D de booleanos (de rutina) en el cubo. Lo hace esta una capa a la vez, pasando a la siguiente capa cada vez que dices para que aparezca.
Ahora para una vista de alto nivel del programa principal:
El programa principal se mantiene alrededor de un puntero a la rutina que estamos ejecutando actualmente. En el loop() Dile varias veces la rutina actual para actualizar, copiar el nuevo marco que ha generado la rutina en una variable local y luego comprueba si ha habido cualquier entrada en los botones. Si ningún botón ha sido pulsado, nos elimine la vieja rutina y reemplazarlo con uno nuevo que enciende para arriba el cubo entero. Si se suelta un botón, borrar la vieja rutina y sustituirla por una nueva rutina que corresponde a ese botón.
Este código se interrumpe repetidamente (420 veces por segundo con la configuración actual) para mostrar la siguiente capa en el cubo. Aquí, simplemente pasamos el último fotograma que hemos calculado totalmente a la CubeView que se muestre. Aquí encontrará más información sobre interrupciones. El método de visualización interrumpir el código mantiene la frecuencia de actualización independiente de tiempo de cálculo y evita el parpadeo.
Si quieres grabar vídeos de un cubo que has construido, simplemente cambiar el #define REFRESH_RATE algo así como 240. Eso hará que el cubo flash tan rápido que la cámara no recogerlo.
Más información sobre rutinas en el siguiente paso: