Mesa interactiva de LED de cerveza (48 / 88 paso)

Paso 48: Software: tiempo demoras y animaciones

Para hacer una animación, deberemos crear alguna forma de un intervalo de tiempo entre los fotogramas, de lo contrario la animación sólo toma una fracción de segundo para completar. No queremos utilizar ningún retraso de tiempo convencional que detener el programa e inutilizar otras características tales como las arandelas de la bola. Necesitamos mantener el programa de colocación a través de todo el código y control de cada segmento de código para ver si ha pasado el tiempo transcurrido.

Una de las formas más efectivas para hacerlo es usar un contador global que obtiene se incrementa en una rutina de interrupción. En la rutina de servicio de interrupción para Timer3, hay una variable global de 32-bit (count32) que es incrementada en cada interrupción. Esta variable se utiliza en la mayoría de nuestros retrasos de interrupción junto con una función llamada ' Time_Check (UINT32 * marca, intervalo UINT16)' que permitan el seguimiento del tiempo de retardo mientras se mantiene el flujo del programa. Vamos a crear una animación de ejemplo que se ilumina cada fila de la rejilla LED uno por uno. Nosotros lo llamamos 'Our_Test_Animation(void)'.

Our_Test_Animation(void)
1) en el archivo Globals.h, dedicar seq [x] a la función que está creando. 'x' es una variable no utilizada en la matriz de [] seq. Para este ejemplo usaremos seq [24].

2) agregue el prototipo de función al archivo de encabezado y la función en el archivo de programa de C. Para este ejemplo, nuestra será 'UINT8 Our_Test_Animation(void)'.

3) declarar la variable 'estática UINT8 last_seq' que es igual a 0xFF y 'estática UINT32 tmark' variable que es igual a 0. Estas variables tienen que ser estática para que la rutina Recuerde sus valores cuando coloca a través de la animación.

4) necesitamos al menos una variable local llamada 'retraso' que se utiliza para hacer referencia a 'count32' en la función Time_Check(). 'demora' hace exactamente lo que se llama, retrasa el programa una determinada cantidad de tiempo (8ms/interrupción * valor de 'retraso').

5) El valor de reposición de seq [x] es 0xFF. Cuando la rutina comienza a ejecutar el ' si (seq [24] == 0xFF)' pieza de código, esto es hasta ciertas variables para la puesta en marcha de nuestra animación.

6) el siguiente ' si (seq [24]! = last_seq)' declaración comprueba si hay una nueva secuencia. Si hay, last_seq actualizará el valor actual de la seq [24], luego actualizar la referencia de sincronización (tmark) y luego actualizar el código de la animación.

7) ' si (Time_Check (& tmark, retraso))' comprueba si la cantidad de tiempo transcurrido desde el último bucle a través de la función. Si tiene, se actualizará seq [24] a la siguiente secuencia y la animación se actualizará en el siguiente bucle a través de la función.

8) ' si (seq [24] > 31)' comprobará para ver si todas las secuencias han sido ejecutadas y si la animación ha terminado. El valor de '31' depende de cuántas secuencias tiene en su rutina (tenemos 32 secuencias de esta rutina, 0 - 31). Si todas las secuencias han sido ejecutados, set seq [24] a su valor predeterminado de 0xFF y devolver un 0 indicando que ha finalizado la animación.

9) si la animación no ha ejecutado todas sus secuencias devolverá un 1.

Cruz de referencia los pasos anteriores con el código terminado en la foto #4. Al crear una animación de esta manera, estamos limitados a 255 secuencias (255 secuencias + 1 secuencia de reset) porque estamos utilizando una variable de 8 bits para seq [x]. Si usted necesita más de 255 cuadros, puede cambiar seq [x] a una variable de 16 bits y tienen secuencias hasta 65535. Si usted necesita más precisa sincronización de Timer3 puede ofrecer (~ 8ms por interrupción), puede configurar Timer5 interrumpir cuanto antes y mover allí el contador global (count32). Por último, la cantidad predeterminada de animaciones que el código puede soportar es de 50. Si usted necesita más de 50 animaciones de interrupción retrasó, basta con aumentar el valor de la constante SEQ_AMOUNT (typedefs.h) el valor que usted necesita.

La principal limitación al uso de un retraso de la interrupción de este es que nuestro bucle principal tiene que ser eficiente y no perder demasiado tiempo en ninguna rutina en el bucle principal. El programa debe seguir fluyendo todo el camino a través de porque si detiene para demasiado largo retrasará el momento en el resto de las rutinas junto con él. Foto #5 contiene otro ejemplo de una animación llamada Cycle_Colors(void) que utiliza el mismo formato de retardo de interrupciones.

Artículos Relacionados

Tabla interactiva de LED

Tabla interactiva de LED

aquí es guiada instructable sobre cómo hacer tu propia mesa interactiva usando uno de los juegos de Evil Mad Sciencitst.Aquí está un video de mi mesa final en acción en la oscuridad y una foto de lo que parece:Paso 1: Elegir el tamaño y diseño de una
Tabla interactiva del LED - la manera Simple

Tabla interactiva del LED - la manera Simple

Ok ¿cómo muchos de ustedes han visto las mesas interactivas que puede vender por más de $150 un pie cuadrado? Por lo que usted mira alrededor trate de juntar algunas figuras en él entonces realizar su demasiado caro. ¿Si sólo había una forma sencilla
Cómo construir una mesa de ping-pong plegable cerveza!

Cómo construir una mesa de ping-pong plegable cerveza!

he construido esta tabla de pong de la cerveza para un amigo!Se trata de que una mesa de beer pong es muy grande para crear una versión plegable!Éste es modificado para requisitos particulares como un campo de fútbol.Paso 1: Preparar los materiales.
Crear tu propia mesa de Pong de la cerveza

Crear tu propia mesa de Pong de la cerveza

Vida social universitaria para algunos incluye una amplia gama de asuntos. De sucesos del servicio de deportes de la Universidad, vida social en la Universidad es una parte muy grande de la atmósfera a través de campus. Una divertida parte de la vida
Flotante mesa de Pong de la cerveza

Flotante mesa de Pong de la cerveza

para muchas personas aquí, es ahora el tiempo del verano. Para muchas de las personas, el verano significa partes (es decir, unos al aire libre). Para muchas de las personas esto incluye una piscina en algún momento. Y desde una parte a menudo incluy
Táctil LED de mesa

Táctil LED de mesa

Este instructable es paso a paso cómo construir una mesa táctil ledPaso 1: Paso 1: conseguir una mesa cuadradaUsé una mesita pequeña comprada en walmartPaso 2: Paso 2: cortar un agujero en la tabla El siguiente paso fue hacer un agujero cuadrado en l
Mesa portátil de encargo de la cerveza casera

Mesa portátil de encargo de la cerveza casera

Paso 1: El diseño he construido esta tabla para nuestro intercambio de regalo Santa secreto anual. Mi dibujo es un fan lakers enorme y quería una mesa de ping-pong de cerveza portátil, pero el presupuesto para el cambio es de $40... Así que construí
Pantalla Multitouch interactiva

Pantalla Multitouch interactiva

entre el iPhone de Apple y mesa interactiva de Microsoft, pantallas multi-touch están de moda. Este instructable le mostrará cómo convertir tu proyector lcd en una tabla de pantalla interactiva multi-touch con algunos componentes baratos disponibles
Arduino cerveza Pong Arcade

Arduino cerveza Pong Arcade

vamos a hacer una mesa de pong de la cerveza llamativo.   La mesa se ilumina como tazas se eliminan y se reproducen sonidos de arcade de estilo antiguo.Este juegos eleva el arte sutil de PONG de la cerveza a un nuevo nivel.  Un nivel deportivo.  Una
Proyector bombilla conversión a LED

Proyector bombilla conversión a LED

recibió un proyector de un amigo de diciembre de 2010. Es un Sharp D100U de 1997. No tiene la bombilla original, pero todo funcionaba bien. Hice algunas investigaciones en línea para ver si podía conseguir una bombilla para él y descubrió que costarí
Cómo construir una mesa de Beer Pong

Cómo construir una mesa de Beer Pong

Propósito:·         Enseñar las reglas básicas de pong de la cerveza·         Cómo construir con éxito una mesa de pong de la cerveza colegialPaso 1: ¿Qué es Pong de la cerveza?Beer Pong:·         Pong de la cerveza se utiliza sobre todo como un jueg
Linterna de LEDs y batería de litio recargable de libre

Linterna de LEDs y batería de litio recargable de libre

actualización: para mi primera prueba el laster linterna 24 horas y 7 minutos antes de que necesitaba una carga.Construcción de una linterna de larga duración, recargable y potente es fácil y barato. Había utilizado el siguiente.Una botella de mesa e
Colegio fácil cerveza Pong Table

Colegio fácil cerveza Pong Table

Todos hemos visto las cosas que deshacerse de los estudiantes universitarios antes de verano-canapés, colchones, lámparas, etc.. Si usted sucede encontrar una estantería y una tabla de planchar, puede convertir esa basura en una mesa de pong de la ce
Mesa de centro de subwoofer

Mesa de centro de subwoofer

Mi mesa de Ikea tenía un par de agujeros de tamaño del codo debido a algunas vencidas en una fiesta - así que esto comenzó como una necesidad de voltear la mesa, cuando me acordé tenía un par de subwoofers coche ocupando espacio en un armario!Por jus