USB Wii manette classique (6 / 18 étapes)

Étape 5: USB HID rapports et descripteurs de rapport

Lorsque vous effectuez un périphérique HID, l’appareil envoie des rapports courts à intervalles réguliers à l’ordinateur. Ces rapports contiennent des informations sur quels boutons sont pressés et combien les manettes ont déménagé. Toutefois, afin que l’hôte de comprendre le format de données, l’appareil doit « décrire » les rapports à l’hôte. C’est pourquoi nous écrivons un descripteur de rapport USB HID.

Jetez un oeil à votre manette classique Wii. Il possède 15 boutons (ronde jusqu'à 16 pour plus de simplicité) et deux manettes de jeu. Cela signifie que nous devons envoyer 15 bits de données pour les boutons et 4 nombres, un pour chaque axe de données de la manette. Nous définissons notre format de données pour ressembler à ceci :

Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
Octet 0BoutonBoutonBoutonBoutonBoutonBoutonBoutonBouton
Octet 1BoutonBoutonBoutonBoutonBoutonBoutonBoutonBouton
Octet 2Axe du stick analogique gauche X as Integer signé Char
Octet 3Axe du stick analogique gauche Y as Integer signé Char
Octet 4Axe du Stick droit X as Integer signé Char
Octet 5Axe du Stick droit Y as Integer signé Char

Et puis nous pouvons définir une structure de données en C/C++

Un descripteur de rapport l’écriture implique décrivant un contexte d’utilisation tout d’abord et puis décrivant les données sur le plan de son étendue et de la taille puis décrivant la signification des données par rapport au contexte d’utilisation.

Tout d’abord, faire comprendre que l’appareil est une manette de jeu à l’ordinateur

Puis de décrire les données de bouton (16 bits)

Ensuite décrire les données de le 4 axe comme des entiers 8 bits signés

  • NOTE: Z est utilisée pour représenter l’axe X du stick droit, Rx est utilisé pour représenter l’axe Y du stick droit. Ce n’est pas sensé, mais c’est ainsi que la plupart existants tapis de jeu USB fonctionnent. J’ai testé à l’aide de Battlefield Bad Company 2, ça marche.
  • Remarque : Utilisez « absolu » pour quelque chose comme les manettes de jeu, mais « relatif » pour des choses comme souris.

Enfin, le descripteur de rapport ressemble à :

Maintenant que nous avons un descripteur de rapport, comment faisons-nous nos AVR dire ce genre de choses à l’ordinateur ? Allez télécharger le « HID descripteur outil officiel » de http://www.usb.org/developers/hidpage/ . Il permet de mettre ce genre de choses dans, et l’outil va générer le tableau binaire correct pour vous.


Lorsque vous enregistrez votre résultat, allez dans « Fichier » -> "Enregistrer sous" et puis assurez-vous que vous choisissez "fichier d’en-tête (* .h)" dans l’enregistrer boîte de dialogue. Puis ouvrez le fichier, il devrait ressembler à

Grand, la taille du tableau doit être copié dans V-USB « usbconfig.h » où il est dit « USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH » et « char ReportDescriptor » doit être renommé en « PROGMEM char usbHidReportDescriptor » alors qu’il est stocké dans la mémoire flash de l’AVR. Vous vous retrouvez avec quelque chose comme :

Ce morceau de code, ainsi que le typedef struct, nous l’avons fait précédemment, est inclus dans le code source de notre projet (voir le code source entier) plus tard.

Lecture plus :

Articles Liés

Contrôleur de l’objectif de l’Arduino - synchronisé Zoom/mise au point avec la manette classique Wii

Contrôleur de l’objectif de l’Arduino - synchronisé Zoom/mise au point avec la manette classique Wii

mon Lumix GH2 Micro Four Thirds caméra tire non seulement des vidéos fantastiques haute définition, mais avec des adaptateurs bon marchés je peux l'utiliser avec les anciennes lentilles manuelles qui sont bon marchés et souvent très haute qualité. Je
Manette classique pour adaptateur USB

Manette classique pour adaptateur USB

Si vous a grandi dans le début des années 1980 et ont été dans les jeux vidéo, vous avez probablement eu un Atari 2600, ColecoVision ou console de jeu similaire. Les contrôleurs ou les manettes de jeu pour chacun de ces systèmes ont une sensation dis
Teensy USB Wii Classic Controller

Teensy USB Wii Classic Controller

Je suis un fan de la Manette classique Wii, mais je n'ai jamais pris en charge pour avoir à garder les contrôleurs sans fil facturés pour un épisode occasionnel de nostalgie. Ne serait-il pas merveilleux si je pouvais utiliser ma manette classique Wi
Wireless clé USB Wii Nunchuk-à-souris pour PC, Mac et la tablette de jeux vidéo

Wireless clé USB Wii Nunchuk-à-souris pour PC, Mac et la tablette de jeux vidéo

Prêt pour se sentir comme le légendaire « Bruce Lee » utilisant des Wii Nunchuks sans fil sur un amusant jeu vidéo combat de stickman kung fu PC appelé One Finger Death Punch (OFDP). Que diriez-vous de jouer Jetpack Joyride sur Facebook ou sur votre
Périphérique Midi USB de manette de jeu vieux

Périphérique Midi USB de manette de jeu vieux

vous pouvez dépenser beaucoup d'argent sur un périphérique USB Midi cher ou créer les vôtres. Vous pouvez acheter des cartes USB HID et construire votre propre totalement à partir de zéro. Pour rendre le processus encore plus facile, sauver une vieil
SNES + Teensy = USB/PS3 manette

SNES + Teensy = USB/PS3 manette

contrôleur de la Super Nintendo est l'un des meilleurs manettes jamais réalisé. Ce tutoriel va montrer comment vous pouvez insuffler une vie à votre manette SNES vieux donc vous pouvez l'utiliser avec votre PC et votre PS3.Vous aurez besoin des éléme
Manette de Wii USB utilisant Arduino Leonardo

Manette de Wii USB utilisant Arduino Leonardo

Le week-end dernier, j'ai essayé la nouvelle RetroPie sur ma belle nouvelle Raspberry Pi 3, mais le contrôleur de jeu que j'ai est l'oldie Wii manette classique ; alors, comment puis-je convertir il à un contrôleur de jeu USB ordinaire ?Après quelque
Funtendo - un contrôleur multistick rétro pour votre PC

Funtendo - un contrôleur multistick rétro pour votre PC

Funtendo est un complètement autonomes rétro gaming & contrôleur de système pour votre PC.Il est capable d'utiliser l'original Nintendo contrôleur, le contrôleur de la N64 et le contrôleur Wii Classic en même temps !Funtendo est alimenté par USB et c
Initiation à l’ordinateur de poche Mini

Initiation à l’ordinateur de poche Mini

Environ un mois et demi, j'ai créé un projet appelé l'ordinateur de poche Mini et écrit une Instructable sur la façon de le construire. Ce Instructable prend l'ensemble du projet un peu plus loin en vous aidant à démarrer avec votre ordinateur de poc
Construire votre propre mini ordinateur de poche

Construire votre propre mini ordinateur de poche

jamais veulent faire l'expérience des années 70 et 80 informatique sans jongler avec le matériel ancien qui grincent et 5,25 disquettes ?Dans ce Instructable, je vais vous apprendre comment construire et programmer votre propre mini ordinateur de poc
Console de jeu ultime classique manette pour adaptateur USB

Console de jeu ultime classique manette pour adaptateur USB

Cet article décrit comment utiliser un Arduino Leonardo ou Arduino Micro pour mettre à la disposition d'un ordinateur modern (p. ex. Windows PC, Mac ou Linux) jusqu'à trois manettes de console classique (Atari 2600, ColecoVision et éventuellement d'a
Manette de la NES de Nintendo Bluetooth à l’aide de la Wiimote !

Manette de la NES de Nintendo Bluetooth à l’aide de la Wiimote !

Disposé à jouer rétro-jeux sur mon PC ou le Mac j'ai voulu utiliser le pad classique de NES !Je sais Wiimote fonctionne bien avec les deux alors pourquoi réinventer la roue.Le problème est de savoir comment intégrer une manette classique de la NES un
GameCube Controller pour Wiimote

GameCube Controller pour Wiimote

Deuxième Instructable. Faites-moi savoir si quelque chose doit être fixée.Je n'ai fait le circuit ou le programme. Je fais juste un guide qui montre l'assemblage étape par étape comment faire une Gamecube contrôleur Wiimote.La page originale est ici
Contrôleur de MAME sans fil portable

Contrôleur de MAME sans fil portable

Description:Ce projet vous permettra de fabriquer un contrôleur sans fil Portable pour MAME. La boîte MAME (Multiple Arcade Machine Emulator) j'ai utilisé était un Pi de framboise Mame avancée en cours d'exécution, mais n'importe quelle boîte support