Paso 2: Explicación de General Sketch
Si usted no lo ha hecho, descargue el bosquejo de arkanoid de aquí
Explicación de esquema general:
Este juego tipo arkanoid de la KeyChainino se basa en una bola que rebote en la "pantalla" (matriz de LED) y una pala para evitar las caídas de la bola en la parte inferior de la pantalla.
El corazón del boceto es activado por el desbordamiento del temporizador 1. Esta función se utiliza para dos cosas:
- Se actualizan automáticamente (en fondo) de los valores en juego, como la posición de la bola
- Actualización de la matriz de Charlieplexing según una matriz programada - llamada matrixState - que se utiliza para activar o desactivar los LEDs y asi cosas de muestra en la pantalla.
Quiero pasar algunas palabras sobre la matriz de Charlieplexing.
La matriz de Charlieplexing - según Wikipedia - es una técnica para manejar un display multiplexado en que relativamente pocas I/O pines de un microcontrolador sirven para manejar una matriz de LEDs.
Básicamente, con esta técnica que son capaces de conducir más LEDs que los pines I/O del microcontrolador.
¿Cómo? Al conectar los LEDs en forma particular - descrita en el artículo anterior, puede conducir los LEDs por cambiar el estado de los pines del microcontrolador. Usted puede encender un LED girando un perno de alta y baja otro pin. Los otros pines deben estar en tres Estados, lo que significa que se deben poner estos pines como entrada.
Cada tiempo el temporizador 1 contador desborda - lo que significa que su contador regresa a cero - su interrupción desbordamiento ocurra y su función actualiza la matriz de Charlieplexing leyendo el valor de la matrixState de 6 x 5 y poner este valor (1 o 0) al LED específico.
Sólo un LED cuando se pone en el, pero mientras que el desbordamiento es demasiado rápido - más rápido que la frecuencia de ojo leer - tenemos la sensación de que todos los LEDs están encendidos al mismo tiempo.
Sin embargo no necesita preocuparse por esta función de charlieplexing, porque basta con cambiar los valores de matrixState para encender o apagar los LEDs.
Aquí el matrixState. En este caso todos los LEDs están apagados.
Si desea crear una cara, puede modificar la matrixState de esta manera:
Obviamente no necesita cambiar la matrixState de esta manera. Después le mostraré cómo puede hacerlo con arrays.
Revisa este post para más detalles acerca de Charlieplexing.