Ajouter des boutons de votre manette de jeu X52-Pro avec un Arduino Micro (5 / 12 étapes)

Étape 5: Créer le descripteur de HID pour votre nouveau périphérique

Maintenant, vous avez testé votre configuration de prototype, que vous pouvez commencer à transformer votre Arduino périphérique HID-Compatible. L’environnement Arduino est déjà mis en place afin qu’il puisse fonctionner comme un clavier et une souris, mais il faut ajouter un autre type d’appareil dans le mélange.

Les spécifications de HID sont conçues pour permettre à quiconque de créer un dispositif de classe USB ou une application sans devoir créer des pilotes personnalisés. C’est très pratique, mais ne signifie que la spécification est assez complexe car il cherche à être toutes choses à tous les hommes. Essentiellement, vous spécifiez le type de périphérique que vous créez - clavier, Joystick, souris, manette, volant, etc. - et puis spécifiez une ou plusieurs collections d’entrées de différents types. Ces paramètres, le type et la taille des données d’entrée spécifiées avec une longue série de codes arcanes et ne font pas pour faciliter la lecture. Heureusement la plupart des descripteurs que j’ai trouvé nageant avec des commentaires de texte brut qui rendent la vie un peu plus facile. Il y a aussi quelques bons guides et tableaux d’utilisation sur le web. Ils sont un peu secs, mais ils vous aideront à trouver ce dont vous avez besoin. Voici un couple que j’ai trouvé très pratique :

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

Table d’utilisation HID : http://www.freebsddiary.org/APC/usb_hid_usages.php

Vous pouvez également trouver des informations plus détaillées et un outil de descripteur (assez maladroit) HID à http://www.usb.org/developers/hidpage#HID outil descripteur

Voici le descripteur HID que j’utilise pour ma configuration :

 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 

Pour arriver ici, j’ai regardé sur les spécifications de USAGE_PAGE et de son utilisation et a décidé que la manette de jeu est la meilleure description d’utiliser comme une manette de jeu techniquement a au moins 2 axes analogiques plus au moins deux boutons. La manette de jeu peut avoir soit analogique X / Y ou un commutateur 4 voies numérique plus au moins deux boutons, donc je pourrais monter mon extension dans cette catégorie. Après cela nous spécifier une collection d’application et attribuez-lui un ID de rapport. Cela nous permet d’identifier les données plus tard.

Maintenant, nous spécifions une collection physique. C’est nos boutons. Vous pouvez avoir plusieurs collections, imbriquées ou side-by-side, mais je ne ressens pas le besoin. À l’intérieur de la collection physique vous maintenant spécifiez les entrées. Pour commencer j’ai la liste de la page utilisation de bouton et puis spécifiez les valeurs minimales et maximales, dans ce cas 1 et 8, comme je l’ai 8 boutons. J’ai ensuite spécifier logique minimum et maximum pour chacun de ces boutons. Car ils sont de simples interrupteurs je n’ai que 1 et 0 pour pressé et ne pas pressé. Puis je spécifier le nombre d’éléments dans le rapport et le nombre de rapports pour cette page de son utilisation. Enfin, je précise le type d’entrée pour cette valeur - données, qui sont Variable et se compose des valeurs absolues, plutôt que les valeurs qui sont relatives à des valeurs déclarées sur le derniers.

Le commutateur de chapeau est quelque peu différent. Un commutateur de chapeau nécessite une valeur de 0 à 7 qui spécifie la direction du chapeau par incréments de 45 degrés - 0 = vers le haut, 1 = haut/droite, 2 = droite, 3 = bas/droite, etc.. Cela signifie que nous spécifions la logique min/max comme 0 et 7 min/max physique 0 et 315. Nous n’avez pas besoin d’aller un plus loin en 360 degrés est équivalent à 0 degrés. Nous avons également spécifier l’unité comme une position de rotation angulaire. 0-7 peut être figurant dans quatre bits la taille du rapport est à 4 cette fois.

Ainsi, 8 boutons et un chapeau, nous avons terminé ? Pas tout à fait. Vous avez besoin de transférer un nombre entier d’octets pour chaque rapport à la prise USB, donc nous avons besoin d’ajouter un padding. Vous pouvez le faire en ajoutant un autre chapeau fantôme qui n’est jamais utilisé, mais c’est plus propre à simplement ajouter un autre rapport de 4 bits, puis affectez-lui le type d’entrée constante. Cela fait, vous pouvez fermer les deux physiques et collections de l’application et vous avez terminé.

Malheureusement, alors que Windows reconnaît le périphérique très bien vous trouverez que certains jeux ne sera pas comme ils s’attendent à trouver un X / axe Y donc, comme vous pouvez le voir dans le fichier ci-dessus, j’ai ajouté X factice / axes des ordonnées. Ceux-ci apparaîtront dans les données transférées, mais que nous changeons jamais les valeurs de 0 alors le bâton factice n’apparaîtront jamais à se déplacer.

Articles Liés

Ajouter des boutons de votre souris

Ajouter des boutons de votre souris

J'ai joué FPS jeux sur mon PC pendant un certain temps maintenant et j'ai souvent trouvé moi-même nécessitant plus de boutons sur ma souris. C'est pourquoi j'ai acheté en même temps un Logitech G9, mais dans certains jeux même que les boutons C' est
Ajouter un petit joystick de pouce deux axes analogiques à votre manette de jeu existante.

Ajouter un petit joystick de pouce deux axes analogiques à votre manette de jeu existante.

Après que j'ai acheté un Thrustmaster Hotas Flight Stick X pour Elite dangereux, j'ai voulu deux axes analogiques supplémentaires pour Poussée vertical/latéral.Après quelques recherches sur Google, je suis tombé sur cette entrée de blog sympa : tourn
Comment ajouter des boutons de médias sociaux à votre Blog Blogger (Blogspot)

Comment ajouter des boutons de médias sociaux à votre Blog Blogger (Blogspot)

Je suis passé par le sang, sueur, larmes et beaucoup d'idées différentes pourenfin trouver la bonne façon d'ajouter des boutons de médias sociaux à mon blog. Étant donné que c'était si difficile pour moi, j'ai décidé de faire un tutoriel pour vous dé
Comment faire pour changer la porte/plaque de bride de votre manette de jeu

Comment faire pour changer la porte/plaque de bride de votre manette de jeu

Gates bride modifier la zone de l'espace que votre manette de jeu peut se déplacer. Parfois changer votre assiette peut vous aider selon votre façon de jouer.Par défaut, la plupart des manettes équipées d'une porte carrée, dans ce tutoriel, je vais v
Ajouter des liens vers votre blog

Ajouter des liens vers votre blog

ajouter des liens vers votre blog.Etape 1: Mettre en évidence les mots que vous voulez lié Cliquez et faites glisser votre curseur pour mettre en surbrillance les mots dans votre message vous voulez lié.Étape 2: Cliquez sur « Lien » dans la barre de
Transformer une N64 Controller une manette de jeu USB en utilisant un Arduino Leonardo

Transformer une N64 Controller une manette de jeu USB en utilisant un Arduino Leonardo

Pour transformer une manette de jeu USB de controleur de la N64, la méthode la plus simple consiste à acheter un N64 Controller Adapter pour environ £15. Cependant il peut aussi être fait si vous avez un Arduino Leonardo ou tout autre carte Arduino a
Ajouter des boutons ergonomiques ou pédales à votre clavier d’ordinateur

Ajouter des boutons ergonomiques ou pédales à votre clavier d’ordinateur

transformer eSmacks doigts endoloris en excellence d'emacs.tappity-plongeur-tappity-tap.Vue d'ensembleEn appuyant sur un bouton sur un clavier ferme un circuit. Ajout d'un commutateur plu en parallèle à un bouton particulier par brasage/cuivre taping
Ajoutez des itinéraires à votre 3D imprimer pour qu’il allume

Ajoutez des itinéraires à votre 3D imprimer pour qu’il allume

Ce que nous voulons atteindre :Bonjour DYI'ers dans cette i´m instructable va vous montrer comment ajouter des routes et des compartiments à vos impressions 3D.Avec ce you´ll être en mesure d'ajouter LED / électronique pour rendre l'accessoire parfai
Ajouter des effets sonores à votre voiture R/C

Ajouter des effets sonores à votre voiture R/C

R/C Animator vous permet d'ajouter des sons et éclairage à votre voiture R/C, avion, hélicoptère ou bateau. Les effets sont déclenchées avec votre contrôleur de R/C et peuvent être combinés.  Voici une démo ;Animateur de R/C est basé sur l' Hélice pl
Ajouter des tiroirs de votre établi

Ajouter des tiroirs de votre établi

Ce Instructable montre comment j'ai ajouté des tiroirs sur un établi de 2 x 4 pour faire un meilleur usage de l'espace sous la table de travail.Les principes discutés dans ce Instructable devraient s'appliquer à presque n'importe quel établi ou autre
Améliorer une scie à chantourner peu coûteux - ajouter des boutons !

Améliorer une scie à chantourner peu coûteux - ajouter des boutons !

Cette instructable vous montrera comment améliorer une scie à chantourner peu coûteux. Généralement, ce type de scie à chantourner accepte les lames avec des épingles, mais est livré avec adaptateurs pour lames pinless, qui sont plus couramment utili
Comment : Ajouter un bouton de la souris pour Apple Macbook Pro pour (presque) gratuit !

Comment : Ajouter un bouton de la souris pour Apple Macbook Pro pour (presque) gratuit !

j'ai jamais aimé l'idée de ne pas avoir un bouton de clic de souris standard sur mon nouveau Unibody Macbook Pro, après avoir fait quelques regardant autour en ligne j'ai trouvé une excellente solution. À l'aide d'une vieille affaire de DVD et de rub
Pirater un contrôleur de jeu vidéo avec un Arduino pour une plus grande accessibilité (ou de la tricherie)

Pirater un contrôleur de jeu vidéo avec un Arduino pour une plus grande accessibilité (ou de la tricherie)

Tout le monde aime les jeux vidéo. Mais il peut être difficile d'apprécier certains jeux si vous êtes blessé ou désactivé et n'avez pas la dextérité nécessaire à la réalisation des combos de touche rapide. Heureusement, nous pouvons utiliser un Ardui
Ajouter des effets sonores à votre moto électrique

Ajouter des effets sonores à votre moto électrique

ajouter n'importe quel son que vous souhaitez pour votre moto électrique avec certains haut-parleurs portables et un lecteur MP3 !Étape 1: Télécharger MP3s Télécharger amusement bruitages provenant d'internet, utilisez un CD de bruitages, ou sortez e