Cañón neumático accionado por Arduino controlado por Android (9 / 11 paso)

Paso 9: Programar tu Arduino

Si usted planea desarrollar su propio código de Arduino, entonces tiene sentido desarrollar en conjunto con el hardware. Así, puede desarrollar progresivamente y probar cada componente como vas. Hace mucho más fácil que si tuviera que intentar escribir todo el proyecto a la vez y probar al final de la depuración.

Todo el código fuente de Arduino está conectado. Si no le interesa modificarlo o aprender cómo funciona, puedes descargar y desplegar. Si desea ver cómo funciona, lea este paso y luego ver el código.

A partir de evt_loop.cpp, el programa primero llama evt_loop_init. Luego, repetidamente llama event_loop_proc indefinidamente, hasta que el Arduino pierde potencia. Mirar estas dos funciones, verás que la mayoría de la Arduino de código se centra en la idea de colas de mensajes . Colas de mensajes son útiles en situaciones donde se necesita un sistema para hablar a otro de una manera asincrónica. En nuestra situación, tenemos un módem Bluetooth que puede recibir datos en cualquier momento. En general, un montón de trabajo va en asegurarse de que los datos nunca se pierde, independientemente de lo que está haciendo el dispositivo cuando el mensaje llega. Afortunadamente, el Arduino Uno tiene un búfer serial hardware integrado de 128 bytes. Puesto que cada uno de nuestros mensajes Bluetooth 1 byte, este buffer será probablemente más que suficiente para nuestra aplicación. Así que nuestra aplicación se encuentra en un bucle, a la espera de un mensaje para entrar desde Bluetooth. En un producto comercial, es típico para el microcontrolador en modo de baja potencia reposo aquí para ahorrar energía. Por simplicidad, no hicimos aquí (véase función de bt_wait_for_msgs de bt.cpp).

Cuando llega un mensaje en el Bluetooth cola (véase función de bt_check_for_msgs de bt.cpp), los datos se leen en y agrega a una cola de mensaje dedicada al manejo de datos desde el módulo de Bluetooth. Hacemos esto porque queríamos que nuestro microcontrolador a ser libres para hacer otras cosas cuando no está procesando mensajes. La cola de mensajes es como un buzón de correo. La próxima vez que el programa tiene la oportunidad, ¡ compruebe el buzón y ver si hay mensajes para él. No usar una cola de mensajes es como gritar fuerte de a través de la habitación. En ese caso, todo tendría que detener y de servicio inmediatamente el comando antes de regresar a lo que estaba haciendo. La función de msgq_push (definida en msgq.cpp) devuelve una variedad de códigos de respuesta (definida en msgq.h) que indican un número diferentes de las condiciones de la cola. Por ejemplo, si el programa nunca revisar su buzón de correo, es posible que esta cola llenar para arriba. En ese caso, el valor de la respuesta indica que la cola estaba llena. Esto permite control de errores, que es una parte esencial del desarrollo de sistemas embebidos.

En evt_loop_proc, el mensaje se lee en una variable local. Además, se pasa un puntero a un tipo de respuesta. El ampersand (&) antes de que el rsp variable significa que la dirección de rsp en memoria está siendo paseed en msgq_pop, en comparación con su valor. Si no han oído hablar de este concepto antes, IBM sabe mucho sobre él, y me encantaría divulgar esa información a usted. Este indicador dice msgq_pop un lugar en memoria donde puede poner el valor de la respuesta. Es algo así como una manera de obtener una función para devolver dos valores, el mensaje y el estado.

Después de tomar el mensaje de la cola (similar al sacar la carta en el buzón de correo), se comprueba la respuesta. Si la operación no fue exitosa, la cola de mensajes Bluetooth toda se restablece y el programa continúa. No hay realmente mucho más que el programa podría hacer en este estado.

Si el programa lo hace más allá de ése parte posteriora de error, mira el valor del mensaje. Si el mensaje fue un '1', se maneja un relé. Si es un '2', se maneja otro. Cualquier otra cosa y se ignora el mensaje.

Nuestro dispositivo no tenía un medidor de presión, por lo que no hay forma para que la aplicación de Android saber si los cartuchos son presurizados o no. Como resultado, dado el suficiente aire, es posible aún allí ser suficiente presión izquierda para disparar dos veces sin tener que volver a llenar el depósito. Para tener en cuenta esto, el Arduino cerrará automáticamente el relé de un segundo después de abrirlo. Esto impide que aire adicional se pierde cuando el barril está vacío. El código que controla los relés de conmutación está disponible en relay.cpp.

Para manejar este cierre automático, se utiliza un temporizador. La mayoría de microcontroladores tienen temporizadores de hardware de alta precisión de la sincronización, por lo que este ejemplo es una buena introducción. Mira timer.h y timer.cpp si estás interesado en aprender más sobre cómo funciona el temporizador. Una vez que ha recibido un mensaje válido de Bluetooth, el relé correspondiente es inmediatamente cerrado (función de evt_loop_proc de evt_loop.cpp), permitiendo que la corriente fluya de la batería a la válvula del aspersor. Entonces, un temporizador en un segundo (1.000.000 microsegundos en el código). Entonces, la función de devolución de llamada se establece que evt_loop_handle_timer, que el módulo de temporizador se llamará una vez transcurrido el período de tiempo determinado.

Dentro de evt_loop_handle_timer, ambos relés se abren, que detiene el flujo de aire de ambos frascos. Pensamos que este sería el enfoque más sencillo para tomar. Una vez que una orden ha sido procesada, se llama evt_loop_proc (de cannon.pde) y repite el proceso.

Una vez este programado el Arduino, automáticamente pondrá en marcha su programa al aplicar energía a través de una batería de 9V.

Artículos Relacionados

POV Arduino controlado desde Android

POV Arduino controlado desde Android

Proyecto de un POV con Arduino controlado desde el celular.POV Proyectos hechos con Arduino hay muchos, pero quise realizar uno en el cual se pudiera enviar el mensaje o palabra visualizar, un estar de evitar través del celular para un cada rato carg
Esparcidor del neumático

Esparcidor del neumático

Al inspeccionar o reparar un neumático de automóvil, es realmente difícil conseguir el neumático extendido lo suficiente como para llegar al interior de la llanta. Yo he necesita esta herramienta para 50 años, pero mantiene aplazar lo que uno hasta a
Neumático Halloween Lunger

Neumático Halloween Lunger

Este Instructable muestra cómo controlar un pistón neumático con un Arduino para animar un apoyo de lunger Halloween. El proyecto consiste en una placa Arduino Uno, cilindro neumático, solenoide y prop de Halloween. Un cilindro neumático puede entreg
DIY espina (y punción)-neumáticos a prueba de

DIY espina (y punción)-neumáticos a prueba de

Hey chicos, Triplephase aquí y este es mi primer Instructable.En este Instructable que usando neumáticos reciclados de bicicleta antigua para crear un neumático resistente a la espina y la bicicleta de mi hermano.Historia: después de algunos neumátic
Fijación de un neumático de bicicleta pinchado

Fijación de un neumático de bicicleta pinchado

Introducción:Un neumático de bicicleta pinchada completamente las ruinas de una bicicleta, para hace inutilizable. Esto puede arruinar totalmente un día de los niños porque él no tiene manera de ir de un lugar a otro sin una bicicleta. Estas instrucc
Neumático para taburetes.

Neumático para taburetes.

La escuela de mis hijos quería taburetes al aire libre y me preguntó si yo podría hacer algunos. Querían algo como mi otomanos pero más pequeño.Trishaw entrar neumáticos! En los países asiáticos Trishaw o tres ruedas se utilizan para el transporte. T
Neumáticos para silla del sofá!

Neumáticos para silla del sofá!

Has vistos todos los neumáticos a otomanos, tablas y taburete. Bien lo has visto transformado en un sofá redondo?? Si no, vas a verlo ahora)."Diseño de guerrilla trata de tomar los objetos existentes y de hacking/modding/acabado ellos en algo fresco
Fuera de la mesa de un neumático de coche (neumático)

Fuera de la mesa de un neumático de coche (neumático)

he tenido un coche de repuesto neumático ahí por un tiempo ahora hice una en un jardín de hierba pequeña y pensé que era tiempo de hacer algo con la otra. Una cosa que necesitaba era que una mesa para exterior tan decidido el neumático podría hacer u
Cómo reemplazar el neumático de la bicicleta con pincho de liberación rápida

Cómo reemplazar el neumático de la bicicleta con pincho de liberación rápida

Si montas en bicicleta, tarde o temprano tendrá que aprender a cambiar una rueda pinchada. Hoy en día, más moderna bicicleta tiene un mecanismo de liberación rápida llamado pincho atado a la rueda y la bicicleta. Hoy, voy a mostrar que estos 6 fácile
Francotirador de PVC neumático $15,00

Francotirador de PVC neumático $15,00

es un francotirador de PVC neumático hice por $15.00. Puede disparar más de 92,5 metros (300 pies) con exactitud y 9 a 15 metros (30-50 pies) con precisión. Tiene 100 psi pero 60 psi es suficiente.Paso 1: partes Aquí está una lista de todas las parte
CARduino - vehículo accionado Arduino, controlado por LabVIEW

CARduino - vehículo accionado Arduino, controlado por LabVIEW

El CARduino es un vehículo operado por control remoto que es controlado por un regulador conectado a un equipo que ejecute LabVIEW. El vehículo es accionado por el Arduino y se puede ampliar a través de la adición de sensores u otros dispositivos. Us
SmartMesh - Arduino y Android controlado neumático fachada

SmartMesh - Arduino y Android controlado neumático fachada

Este proyecto fue parte de Multimodal Media locura 2014, organizado por la Cátedra para ordenador asistido por arquitectura diseño automatizado (CAAD) y Media Computing Group de la Universidad de RWTH Aquisgrán. Para pieles más inteligentes, por favo
Arduino controlado por dimmer luz

Arduino controlado por dimmer luz

ADVERTENCIA: ¿ Algunas personas tratan de construir esto con un optoacoplador con coz zerocrossing derecho 'es mejor'? Algunos se dicen incluso en tiendas de electrónica es mejor utilizar tal un optoacoplador. MAL. Esto sólo funcionará con un optoaco
Arduino-neumático Flight Simulator

Arduino-neumático Flight Simulator

Hola, mi nombre es Dominic Lee. Yo soy un senior en la escuela secundaria que también es un programador y inventor. He creado el "LifeBeam simulador de vuelo" (nombre de mi proyecto) porque quería desafiar a mí mismo y utilizar mis conocimientos