Arduino Leonardo / Micro (ATMega32u4) en tant que manette de jeu / contrôleur de jeu: 8 étapes

Arduino Leonardo / Micro (ATMega32u4) en tant que manette de jeu / contrôleur de jeu: 8 étapes

Table des matières:

Anonim

La puce ATMega32u4 utilisée par Arduino Leonardo, Micro ou Pro Micro peut utiliser des descripteurs USB HID personnalisés. Merci cette capacité, nous pouvons faire de notre Arduino être un Gamepad générique!

Cette bibliothèque contient tout pour "simuler" un gamepad PS2 (donc deux manettes et 16 boutons).

Provisions:

Étape 1: Installation de la bibliothèque

La bibliothèque nécessite un IDE Arduino 1.6.6 ou supérieur pour fonctionner correctement.

Ensuite, nous devons télécharger une bibliothèque.

Toutes les données et la documentation sont stockées dans un référentiel GitHub:

github.com/GAMELASTER/ArduinoGamepad

Pour le télécharger, cliquez sur le bouton "Télécharger le fichier ZIP" situé à droite.

Créez un nouveau répertoire nommé "Gamepad" dans (bibliothèques généralement situées dans Windows) Documents> Arduino> et copiez tous les fichiers du répertoire "ArduinoGamepad-master" au format ZIP téléchargé dans ce répertoire.

Ensuite, démarrez un IDE Arduino et une bibliothèque apparaît dans la liste des bibliothèques et dans la liste des exemples.

Étape 2: Composer et exécuter une esquisse de test

Ouvrez un exemple d’esquisse comme dans l’image, compilez-le et téléchargez-le dans votre Arduino

Étape 3: Permet de vérifier le fonctionnement d'une bibliothèque

Allez à Panneau de configuration> Périphériques et imprimantes et recherchez votre périphérique (pour moi c’est un Arduino Leonardo)> Clic droit> Paramètres du périphérique de jeu> Propriétés> Tester.

Si les boutons pas à pas sont activés / désactivés, tout va bien!

Étape 4: Connecter Thumbaxises et les boutons à Arduino

Pour tester une véritable connexion entre le matériel, Arduino et le PC, nous avons besoin de boutons ou de vignettes.

J'ai eu deux vignettes + 2 boutons (en appuyant sur une vignette), connecté avec Pro Micro et allons faire un dessin Arduino.

J'ai connecté la manette gauche à:

  • X à A2
  • Y à A3
  • Z à 4

J'ai connecté Right Thumbstick à

  • X à A0
  • Y à A1
  • Z à 3

Étape 5: Test des bâtons

tkkrlab.nl/wiki/Arduino_KY-023_XY-axis_joystick_module

Compiler, déployer et ouvrir Serial Monitor.

Essayez de vous déplacer avec le pouce au minimum - maximum, essayez de cliquer, etc.

Les manettes peuvent être différentes. Pour moi, ses valeurs sont relatives.

La valeur minimale de l'axe est 0 et la valeur maximale maximale est 1000. Donc, logiquement, le centre est 500.

À mon pouce est un problème, le centre a (presque) toujours la valeur différente, donc lorsque nous allons faire une intégration avec la bibliothèque, nous devons faire la calibration, la stabilisation et la mise en forme finale des valeurs.

Et le Z (appuyant) j'ai 0 quand on appuie dessus et 1 quand on le relâche (ce n'est pas un vrai, c'est inversé, l'inversion fait un INPUT_PULLUP).

Étape 6: Intégration des valeurs à la bibliothèque

Esquisser:

github.com/GAMELASTER/ArduinoGamepad/blob/master/examples/ThumbsticksTest/ThumbsticksTest.ino

Dans ce croquis, j'ai intégré mes manettes de pouce comme je l'ai indiqué à l'étape précédente.

Maintenant je vais le décrire.

  1. Pour commencer, il faut inclure une bibliothèque (ligne 7)
  2. Ensuite, nous devons définir une valeur de centre pour tous les axes, j'ai réglé tous les 500, parce que c'est un centre par défaut (ligne 10 - 13)
  3. Nous définissons un multiplicateur pour formater une valeur. Comme la valeur maximale est 127, nous obtenons le multiplicateur en divisant 127 par le centre, donc 500 (ligne 14-17)
  4. Initialisation d'une classe de manette de jeu (ligne 20)
  5. Initialisation d’un mode Pin (lignes 23 à 28)
  6. Un étalonnage des manettes commence (ligne 29)
    1. On définit une variable, et autre ceci (lignes 72 - 73)
    2. Un peu de temps … Ceci est pour "la vérification des axes de pouce", si est dans la zone centrale (ligne 74)
    3. Nous lisons une entrée analogique d'axises (lignes 76 - 79)
    4. Nous devons vérifier si axises est dans une "zone centrale", j’ai choisi une plage de 100 (lignes 80 - 83)
    5. Si tout va bien, en revenant jusqu’à 8, confirme bien, on obtient donc un vrai centre. (ligne 84 - 89)
    6. Nous définissons les valeurs d'axises dans des variables globales et nous recalculons un multiplicateur pour tous les axises, donc realCenter divisé par 127
  7. En boucle, nous lisons les entrées analogiques et certains boutons (lignes 33 - 37 et quelques autres lignes)
  8. Nous avons maintenant besoin de formater et de stabiliser les valeurs.
    1. Donc, pour commencer, nous devons obtenir la valeur de l'axe, où 0 est le centre, donc Valeur de l'axe moins le centre de l'axe
    2. Ensuite, nous ce multiple par axe multiplicateur
    3. Et pour stabiliser nous le solons (pas de tour)
  9. Et la dernière chose est "envoyer" des variables dans une bibliothèque.

Le nombre de boutons est décrit dans l'image en haut.

Étape 7: Tester un résultat final

Compiler, déployer et allons jouer au jeu!

J'ai sélectionné un Mirrors Edge, mais Mirrors Edge ne prend en charge qu'un gamepad XBOX 360; vous pouvez le résoudre simplement en téléchargeant X360CE.

Étape 8: Plus d’informations, bugs, etc.

Cette bibliothèque est une partie de mon projet où je construis une console portable Raspberry Pi Retro personnalisée, ce qui sera posté ici dans Instructables quand ce sera fait, pour le moment j’écris un blog de développement sur mon blog, n’oubliez pas de le regarder!

La documentation, les bugs, etc. sont dans GitHub:

github.com/GAMELASTER/ArduinoGamepad/

Ou dites le moi dans un commentaire!