Añadir botones a tu Joystick X52-Pro con un Arduino Micro (7 / 12 paso)

Paso 7: Ampliar el esbozo para enviar los datos

Ahora su entorno está configurado puede Agregar el código para el script de prueba para hacer uso del descriptor HID.

Tomar una copia del script de prueba y modifíquela como sigue. En primer lugar, en la parte superior de la secuencia de comandos que necesita añadir una variable que contenga el estado de la palanca de mando y otro para mantener el interruptor

 // Create a variable to hold the entire state of the device to pass over USB to the HID driverJoyState_t joySt; // A variable to help us manage the 4 hat buttons to make an 8-way hat if we want byte hatButtons; 

Luego agregar una línea en la parte inferior de la función setup() para establecer el estado inicial:

 joySt.buttons = 0; // Set the initial state of the buttons 

En este ejemplo los 8 primeros botones son simples botones así que simplemente podemos contar a través de todos los botones, menos los últimos cuatro para sombrero. y del sistema o borrar el bit apropiado en la variable joySt.buttons.

 if (i < (switchCount - 4)) { // We're looking at all but the last 4 pins as simple buttons in this section // if the button state has changed and it's currently pressed if ((buttonState != buttonLastState[i]) && (buttonState == LOW)) { // Set the button bit joySt.buttons = bitSet(joySt.buttons, i); } // if the button state has changed and it's currently released if ((buttonState != buttonLastState[i]) && (buttonState == HIGH)) { // Unset the buttonbit joySt.buttons = bitClear(joySt.buttons, i); } // save the current button state for comparison next time: buttonLastState[i] = buttonState;} else { ... 

Estamos tratando los últimos cuatro botones como un interruptor. Hay un par de maneras de manejar un interruptor. Usted puede tratar como un simple sombrero de 4 direcciones (norte, este, sur, oeste), o usted puede ir para un sombrerete de 8 (N, NE, E, SE, S, SW, W, NW). Un sombrero de 4 vías es bastante sencillo de manejar por lo que te voy a mostrar aquí la versión de 8-way. La funcionalidad de 8-way significa que usted necesita manejar más de un botón se presiona para que no se pueden establecer cosas como recorrer con los botones. Por lo tanto, a continuación el código anterior, para los últimos cuatro botones debe registrar el estado de cada uno en la variable que creamos anteriormente. Estoy usando una máscara de bits para hacer las cosas más simples como solo podemos leer el valor de entero luego para conseguir la 'dirección' del sombrero.

 } else { // We're now looking at the remaining four buttons as hat switches in this section // Using a bit-mask, set the bit that corresponds to each button so we can // determine the state of all four buttons in one go later on if (buttonState == LOW) { // Set the bit if the button is pressed bitSet(hatButtons, i - 8); } else { // Clear the bit if the button is NOT pressed bitClear(hatButtons, i - 8); } } 

Ahora sabemos que el sombrero se oprimen los botones podemos leer el valor de la variable hatButtons y pase el valor correcto para el objeto joySt:

 // Determine value for hatSw1 according to the buttons that are pressed// This uses the last four bits in the byte so we just need to check the value of // the byte and set the joySt.hatSw1 value if we have a single button pressed or // a valid pair of buttons pressed. Below i've shown what's pressed using UPPER // case and what's not pressed using lower case. i.e. ULdr = UP and LEFT pressed // Key: UP = bit 1, LEFT = bit 2, DOWN = bit 3, RIGHT = bit 4 switch (hatButtons) { case 0: joySt.hatSw1 = 8; break; // uldr : center : hatButtons = B00000000 case 1: joySt.hatSw1 = 0; break; // Uldr : 0 : hatButtons = B00000001 case 3: joySt.hatSw1 = 1; break; // ULdr : 45 : hatButtons = B00000011 case 2: joySt.hatSw1 = 2; break; // uLdr : 90 : hatButtons = B00000010 case 6: joySt.hatSw1 = 3; break; // uLDr : 135 : hatButtons = B00000110 case 4: joySt.hatSw1 = 4; break; // ulDr : 180 : hatButtons = B00000100 case 12: joySt.hatSw1 = 5; break; // ulDR : 225 : hatButtons = B00001100 case 8: joySt.hatSw1 = 6; break; // uldR : 270 : hatButtons = B00001000 case 9: joySt.hatSw1 = 7; break; // UldR : 315 : hatButtons = B00001001 } 

Ahora todo lo que queda por hacer es el estado actual para actualizar el equipo de salida

 // Call Joystick.setState and send the data to the computerJoystick.setState(&joySt); 

Yo he conectado el código para este ejemplo este paso para guardar los dedos.

Artículos Relacionados

Programar Arduino Pro Mini usando Arduino Uno

Programar Arduino Pro Mini usando Arduino Uno

Hola a todos. Hoy voy a mostrar como programar arduino pro mini usando arduino uno.Si ya tenías un arduino uno y nuevamente comprar arduino pro mini entonces usted no necesita comprar el convertidor USB a serial para programar el arduino pro mini por
Subir sketch Arduino Pro Mini usando Arduino UNO

Subir sketch Arduino Pro Mini usando Arduino UNO

He comenzado mi camino con el arduino UNO, hacia el mini pro no comprar el adaptador USB, pero el Consejo UNO que sirve para subir mis dibujos.Paso 1: Quitar el Atmel ICMuy cerfuly quitar el IC Atmel de Arduino UNO, las clavijas son muy gentel así qu
Con un joystick con tu Arduino

Con un joystick con tu Arduino

Palancas de mando son una gran fuente de entrada para un proyecto. Especialmente para la robótica. Como los hackers de hardware la mayoría de nosotros siempre ha amado a este tipo de cosas. Excepto los chicos nuevos a esto podrían ser difícil de capt
Subir bocetos a Arduino Mini Pro uso de Arduino UNO (sin quitar el Atmel Chip)

Subir bocetos a Arduino Mini Pro uso de Arduino UNO (sin quitar el Atmel Chip)

Esto describe un procedimiento para hacer uso de USB incorporado de Arduino UNO a Serial(TTL) subir bocetos a tablero de Arduino Mini Pro sin necesidad de quitar la viruta de regulador micro Atmel de UNO. Esto es útil para aquellos empezando con plac
Añadir un pequeño joystick de pulgar de dos ejes analógicos a su palanca de mando existente.

Añadir un pequeño joystick de pulgar de dos ejes analógicos a su palanca de mando existente.

Después compré un Thrustmaster Hotas Flight Stick X para Elite peligroso, quería dos ejes analógicos adicionales para el empuje lateral/vertical.Después de algunos googleando, me encontré esta entrada de blog agradable: convertir un Arduino Leonardo
Añadir botones en el ratón

Añadir botones en el ratón

He estado jugando FPS juegos en mi PC por un tiempo ahora y me encontrado con frecuencia necesidad de más botones en mi ratón. Es al mismo tiempo compré un Logitech G9, pero en algunos juegos incluso que los botones que los extra 4 parecen ser pocos.
Pimp tu viejo Mac Pro con una unidad de fusión

Pimp tu viejo Mac Pro con una unidad de fusión

yo soy usuario de Mac mucho tiempo. En 2008 compraron un Mac Pro y he usado y amado durante mucho tiempo. Para citar a un buen amigo mío, se está haciendo bastante largo en el diente. Como apple no ha lanzado un nuevo en un tiempo y no hay diferencia
Ver instructivo como usuario pro con características adicionales (todas las medidas en una página + guardar).

Ver instructivo como usuario pro con características adicionales (todas las medidas en una página + guardar).

Este es mi primer instructable. Si tienes alguna sugerencia, por favor me avisan. Esperamos que disfrute de esto. Has pensado de ver todos los pasos de un instructivo en una sola página y guardarlo. Aquí es una técnica para conseguirlo con algunas ca
Añadir Bluetooth a una pantalla de LCD con entrada serial

Añadir Bluetooth a una pantalla de LCD con entrada serial

Pantallas de LCD con entrada serial pueden actualizarse a Bluetooth mediante un puerto de serie Bluetooth JY-MCU. Una buena razón para hacer esto es por lo que la pantalla se puede utilizar con un teléfono Android o tablet. Una sencilla aplicación An
Cómo hacer botones de capa de Jack Sparrow con la resina.

Cómo hacer botones de capa de Jack Sparrow con la resina.

Materiales utilizados:Piezas de madera y tacoLadrillos de LEGOSuper sculpeyResina de epoxy,vaselinaCaucho de silicónAlambre de cobre (2mm),Yeso de París,Escritores de oro tamaño,Polvo de broncePinturas de acrílicoAlambres finos (para colgar botones)E
Un mecanismo de liberación del paracaídas con un Arduino Mini Pro

Un mecanismo de liberación del paracaídas con un Arduino Mini Pro

este es un mecanismo de liberación del paracaídas para un cohete modelo, he construido para un cohete de agua pero trabajar otros tipos. Utiliza un Arduino mini pro (http://www.sparkfun.com/products/9218) que es realmente bueno para esto ya que pesa
Utilizando el teclado de botones de sparkfun 12, con el arduino

Utilizando el teclado de botones de sparkfun 12, con el arduino

Hola chicos, bien comprado este teclado y no estaba exactamente seguro de cómo cablear, porque los pernos no están en orden!bueno, le daré un esquema y que para arriba y en ningún momento...Paso 1: cableado La imagen lo dice todo...las resistencias p
Cómo configurar 2014 flashcart R4i Gold Pro con kernel V3.4b a trabajar con nintendo firmware V7.1.0 16u

Cómo configurar 2014 flashcart R4i Gold Pro con kernel V3.4b a trabajar con nintendo firmware V7.1.0 16u

recientemente, el núcleo de flashcart R4i Gold Pro 2014 han sido actualizados a V3.4b, por lo que este post pretende mostrar cómo configurar el flashcart R4i Gold Pro 2014 con kernel V3.4b a trabajar con nintendo firmware V7.1.0 16u.Antes de empezar,
Añadir un encendedor Bic a su llavero con un soporte de impresión 3d.

Añadir un encendedor Bic a su llavero con un soporte de impresión 3d.

Este es un truco fácil para su encendedor siempre contigo, en tu llavero.Con un 3d realmente pequeño impreso piezas.Si no cabe causa el titular es demasiado apretado, que usted puede cortar con una sierra de metal para darle un poco de elasticidad.Se