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

Paso 5: Crear el descriptor HID de su nuevo dispositivo

Ahora has probado la configuración del prototipo que puede comenzar a convertir tu Arduino en un dispositivo compatible con HID. El entorno de Arduino ya está configurado para permitir que funcione como un teclado y un ratón, pero es necesario agregar otro tipo de dispositivo en la mezcla.

Las especificaciones HID están diseñadas para permitir a cualquier persona crear un dispositivo de clase USB o aplicaciones sin la necesidad de crear controladores personalizados. Esto es muy útil, pero significa que la especificación es bastante compleja ya que intenta ser todo para todos los hombres. Esencialmente se especifica el tipo de dispositivo que está creando - teclado, Joystick, ratón, Gamepad, volante, etc - y luego especificar una o más colecciones de entradas de varios tipos. Estos parámetros y el tipo y tamaño de los datos de entrada se especifican con una larga serie de códigos Arcanos y no para una fácil lectura. Afortunadamente la mayoría descriptores que he encontrado están nadando con comentarios de texto que hacen la vida un poco más fácil. También hay algunas buenas guías y tablas de uso en la web. Son un poco secos pero te ayudará a encontrar lo que necesita. Aquí hay un par que he encontrado útil:

Tutorial de HID: http://developer.mbed.org/media/uploads/wim/hid_usb_intro_an249.pdf

HID de uso de tabla: http://www.freebsddiary.org/APC/usb_hid_usages.php

También puede encontrar información más detallada y una herramienta de descriptor HID (bastante torpe) en http://www.usb.org/developers/hidpage#HID Descriptor de herramienta

Este es el descriptor HID que estoy utilizando para mi configuración:

 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x05, // USAGE (Game Pad) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x03, // REPORT_ID (3) (This is important when HID_SendReport() is called) 0xA1, 0x00, // COLLECTION (Physical) // 8 buttons 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // USAGE_MINIMUM (Button 1) 0x29, 0x08, // USAGE_MAXIMUM (Button 8) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x95, 0x08, // REPORT_COUNT (8) 0x75, 0x01, // REPORT_SIZE (1) 0x81, 0x02, // INPUT (Data,Var,Abs) <br> // 1 Hat Switch 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x39, // USAGE (Hat switch) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x07, // LOGICAL_MAXIMUM (7) 0x35, 0x00, // PHYSICAL_MINIMUM (0) 0x46, 0x3B, 0x01, // PHYSICAL_MAXIMUM (315) 0x65, 0x14, // UNIT (Eng Rot:Angular Pos) 0x75, 0x04, // REPORT_SIZE (4) 0x95, 0x01, // REPORT_COUNT (1) 0x81, 0x02, // INPUT (Data,Var,Abs) <br> // Padding (4 bytes) 0x75, 0x04, // REPORT_SIZE (4) 0x95, 0x01, // REPORT_COUNT (1) 0x81, 0x03, // INPUT (Cnst,Var,Abs) // 1 D-pads - Dummy so Elite:Dangerous recognises it 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7f, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x02, // REPORT_COUNT (2) 0x81, 0x02, // INPUT (Data,Var,Abs) 0xC0, //END COLLECTION 0xC0, //END COLLECTION 

Para llegar hasta aquí miré sobre las especificaciones de uso y USAGE_PAGE y decidió que la almohadilla de juego era la mejor descripción para usar como un Joystick técnicamente tiene por lo menos 2 ejes analógicos más al menos dos botones. El cojín del juego puede tener X analógico / Y o un interruptor de 4 vías digital plus al menos dos botones, por lo que pude ajustar mi extensión en esta categoría. Después de especifique una colección para la aplicación y darle un ID de informe. Esto nos ayuda a identificar los datos más adelante.

Ahora especificamos una colección física. Esto es nuestro botones. Usted puede tener más colecciones, anidadas o side-by-side, pero no siento la necesidad. Dentro de la colección física ahora se especifican las entradas. Para empezar la pagina de uso botón y especifique los valores mínimos y máximos, en este caso 1 y 8 ya que tengo 8 botones. Luego especificar la lógica mínimo y máximo para cada uno de esos botones. Como son simples interruptores solo tengo 1 y 0 para presionado y no presionado. Luego especificar el número de elementos en el informe y el número de informes de esta página de uso. Finalmente especificar el tipo de entrada para este valor de-datos, que es Variable y consiste en valores absolutos, en lugar de valores que son relativos a los valores reportados por última.

El interruptor es algo diferente. Un interruptor requiere un valor de 0 a 7 que especifica la dirección del sombrero en incrementos de 45 grados - 0 = arriba, 1 = arriba/derecha, 2 =, 3 = abajo/derecha, etc.. Esto significa que especificamos la lógica mín/máx 0, 7 y la física min/max 0 y 315. No tenemos que ir alguno más como 360 grados es equivalente a 0 grados. También especificamos la unidad como una posición de rotación angular. 0-7 puede ser contenido en cuatro bits el tamaño del informe está 4.

¿Por lo tanto, 8 botones y un sombrero, hemos terminado? No del todo. Usted necesitará transferir un número entero de bytes para cada informe a los USB host por lo que debemos agregar algún relleno. Podría hacer esto mediante la adición de otro sombrero fantasma que nunca se utiliza, pero es más limpio simplemente agregar otro informe de 4 bits y establecer el tipo de entrada constante. Una vez hecho esto usted puede cerrar ambos físico y colecciones de aplicaciones y listo.

Desafortunadamente, mientras que Windows reconoce el dispositivo bien encontrará que algunos juegos no como esperan encontrar una X / eje Y así como se puede ver en el archivo anterior que he añadido ficticio X / Y ejes. Estos aparecerán en los datos transferidos, pero nunca no cambiamos los valores de 0 entonces el palillo dummy nunca aparece como para moverse.

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