Comment contrôler des robots avec un contrôleur de jeu et Arduino
Les cartes Arduinos et autres cartes compatibles sont l’un des appareils les plus populaires pour les bricoleurs. Que vous soyez un débutant qui commence tout juste à utiliser Arduino ou quelqu'un qui les a déjà mis à profit dans votre vie, ils fournissent une plate-forme pour d'innombrables projets impressionnants..
Aujourd'hui, nous allons explorer un moyen créatif de contrôler un servo à l'aide de Processing et d'un contrôleur Xbox 360. Si vous êtes déjà très au fait du développement de jeux, notre tutoriel Custom Game Controller, qui utilise Unity, pourrait vous intéresser..
Ce tutoriel supposera quelques connaissances préalables. S'il s'agit de votre première incursion dans le violon Arduino, vous trouverez peut-être ici notre guide Arduino utile. De même, si vous utilisez Java pour la première fois, cela peut être un peu déroutant. Bien que Processing utilise une version simplifiée de la plate-forme, ces conseils et concepts Java peuvent néanmoins vous aider..
De quoi as-tu besoin
- 1 x Arduino. Nous utilisons une ONU aujourd'hui.
- 1 x servo de passe-temps. Tout ce qui fonctionnera avec les broches Arduino.
- 1 x manette filaire Xbox360. Bien que cela fonctionne techniquement avec presque tous les contrôleurs.
- Plusieurs fils de raccordement.
En plus de cela, vous devrez également télécharger Processing et l'IDE Arduino à partir de leurs sites Web respectifs..
Préparer l'Arduino
Nous devons d’abord attacher notre servo. Les couleurs de câblage peuvent varier ici, mais en règle générale rouge attache à la 5v épingler, et marron ou noir attacher au GND épingle. La ligne de données, qui est généralement jaune ou Orange, attache à broche 10.
Vérifiez votre câblage et connectez l'Arduino à l'ordinateur. Ouvrez l'IDE Arduino.
Ouvrez le schéma StandardFirmata situé à Fichier> Exemples> Firmata> StandardFirmata. Cette esquisse configure la carte pour le contrôle externe du port série et est identique à celle utilisée dans notre article sur le contrôle d’Arduino avec Python. Procédure de programmation et de contrôle d’un Arduino avec Python Procédure de programmation et de contrôle d’un Arduino avec Python Il est impossible de programmer directement un Arduino en Python, mais vous pouvez le contrôler via USB en utilisant un programme Python. Voici comment. Lire la suite . Téléchargez le croquis sur le tableau.
Si le téléchargement échoue, vérifiez que vous avez sélectionné les détails de votre carte et de votre port dans Outils menu.
Notre Arduino est prêt à partir!
Configuration du traitement
Ouvrez le traitement, vous serez accueilli avec un croquis vierge. Avant de faire quoi que ce soit ici, nous devrons installer quelques bibliothèques. Dirigez-vous vers le Esquisser menu et sélectionnez Importer une bibliothèque> Ajouter une bibliothèque. Cela amènera le Gestionnaire de contributions qui semblera familier à tous les utilisateurs d'Arduino.
Nous devons installer trois bibliothèques pour que cela fonctionne. Le premier est le Game Control Plus bibliothèque. C’est ce qui nous permettra d’utiliser notre contrôleur de jeu avec Processing. Utilisez la fenêtre de recherche pour le trouver, puis cliquez sur installer dans le coin inférieur droit. Game Control Plus nécessite l'installation d'une autre bibliothèque pour son outil de configuration. Rechercher le G4P bibliothèque et l'installer aussi.
Enfin, nous avons besoin de Arduino (firmata) bibliothèque. Vous l'avez deviné, recherchez-le et cliquez sur Installer. Une fois ces éléments installés, nous sommes prêts à tester que tout fonctionnera correctement. Nous travaillons avec Windows 10 aujourd'hui, mais le traitement est disponible pour la plupart des plateformes, y compris Raspberry Pi. Imaginez les possibilités!
Tester l'Arduino
Avant de nous lancer dans la création d'une esquisse personnalisée, testons Arduino et Servo avec traitement. Ouvrir Fichier> Exemples, et sélectionnez ArduinoServo du Bibliothèques contributives / Arduino (firmata) dossier. Nous allons utiliser cela pour tester notre servo, mais nous devrons peut-être d'abord changer quelques choses.
Faites défiler l'esquisse et trouvez cette ligne:
println (Arduino.list ());
Si c'est commenté, supprimez les deux barres obliques avant println (Arduino.list ());, et enregistrez le croquis. Exécutez-le en cliquant sur l'icône de lecture et gardez un œil sur la console en bas. Ceci listera tout ce qui est attaché à votre COM les ports.
Dans mon cas, mon Arduino était sur COM 8, qui était le troisième port répertorié ici. Ceci est important car le code dans la ligne ci-dessous a un Tableau dont la valeur détermine le port COM à utiliser.
Nous devons changer cela pour refléter notre port COM. Pour moi, c'était la troisième position, ou index numéro 2:
arduino = new Arduino (this, Arduino.list () [2], 57600);
Nous devons apporter quelques modifications mineures à ce code pour le tester. Faites défiler jusqu'à l'endroit où les broches Arduino sont installées et commentez l'une des lignes ici. Changer l'autre en Pin 10.
//arduino.pinMode(4, Arduino.SERVO); arduino.pinMode (10, Arduino.SERVO);
Nous devons faire la même chose dans le Dessiner() méthode:
arduino.servoWrite (10, contraint (mouseX / 2, 0, 180)); // arduino.servoWrite (4, contraint (180 - mouseX / 2, 0, 180));
Enregistrez l'esquisse et exécutez-la. Vous devriez pouvoir déplacer votre servo en déplaçant votre souris d'avant en arrière sur la fenêtre générée par le programme..
Si cela ne fonctionne pas pour vous, vérifiez le câblage de votre servo et vérifiez que vous avez la bonne position de matrice pour votre port COM. Une fois que vous savez que l'Arduino parle bien avec Processing, il est temps de passer à autre chose..
Configuration du contrôleur
La bibliothèque Game Control Plus que nous utilisons possède également une configuration puissante. Assurez-vous que votre contrôleur est branché, ouvrez le Configurateur exemple de projet, et exécutez-le. Vous obtiendrez un menu comme celui-ci:
Cliquez sur le nom de votre contrôleur et une fenêtre de configuration beaucoup plus grande apparaîtra..
Cela peut paraître assez intimidant, mais il est conçu pour être aussi simple que possible. Sur le côté gauche, remplissez la première clé avec le nom que vous voulez comme variable. Cette variable va contrôler la position du servo, donc je vais l'appeler servoPos.
Dans l'encadré à côté, vous pouvez donner une brève description de ce qu'il fait. Maintenant, prenez votre contrôleur et déplacez le manche que vous souhaitez utiliser avec votre servo. Un peu d’expérimentation montre que la manette droite correspond à la case Rotation X. Faites glisser une ligne entre le servoPos variable, et cette case.
Nous devons maintenant enregistrer notre configuration en tant que fichier de données. En haut à droite de la fenêtre, remplissez le Rôle de l'appareil terrain et Nom de fichier champ.
Le nom de fichier est important, car vous allez l'utiliser dans votre code. Je garde les choses simples en l'appelant xbs. Cliquez sur Vérifier puis sauvegarder. Ceci écrit un fichier avec des instructions pour notre contrôleur que nous pourrons utiliser plus tard..
Préparation du dossier d'esquisse personnalisée
Configurons notre dossier de travail. Ouvrez une esquisse de traitement vierge et enregistrez-la sous le nom de votre choix. Cela créera un répertoire pour cela dans l'emplacement de sauvegarde.
Maintenant, naviguez vers Documents / Traitement / bibliothèques / GameControlPlus / examples / Configurateur et copiez le dossier intitulé Les données. Ce dossier contient le fichier de configuration que nous venons de créer. Accédez au répertoire de votre esquisse vierge récemment enregistrée et collez le dossier de données..
Création de l'esquisse personnalisée
Maintenant tout est en place et nous pouvons commencer à faire un croquis en utilisant nos deux bibliothèques. Nous allons procéder étape par étape, mais vous pouvez télécharger le dossier complet de l’esquisse et des données si vous voulez aller de l’avant. Notez que vous devrez peut-être toujours modifier le code pour refléter vos ports COM Arduino..
Commencez par importer toutes les bibliothèques dont nous aurons besoin:
import processing.serial. *; import net.java.games.input. *; importer org.gamecontrolplus. *; importer org.gamecontrolplus.gui. *; importer cc.arduino. *; importer org.firmata. *;
Nous devons également déclarer notre ContrôleDevice, I / O, et Arduino, avec un flotte pour conserver les valeurs de notre pouce:
ControlDevice cont; Contrôle de contrôle; Arduino Arduino; pouce flottant;
Notre installer() Cette méthode crée une petite fenêtre, une instance du contrôleur, et fait correspondre le périphérique à notre fichier de configuration. C’est ici qu’il est important d’obtenir le nom de fichier de notre fichier de données de configuration correct:
void setup () taille (360, 200); control = ControlIO.getInstance (this); cont = control.getMatchedDevice ("xbs"); if (cont == null) println ("pas aujourd'hui chump"); // écrit de meilleures instructions de sortie que moi System.exit (-1); // println (Arduino.list ()); arduino = new Arduino (this, Arduino.list () [2], 57600); arduino.pinMode (10, Arduino.SERVO);
Nous vérifions également s'il n'y a pas de contrôleur applicable à ce stade et quittons le programme si nécessaire. Alors que la fenêtre créée avec Taille() n’est pas nécessaire, cela nous donnera un retour d’infos plus tard pour savoir si nous obtenons des valeurs utiles de notre contrôleur. Nous initialisons également notre Arduino et épinglons ici comme nous l’avons fait lors des tests.
Maintenant, nous créons une petite méthode pour récupérer la valeur d’entrée de notre contrôleur et la mapper aux valeurs que notre servo pourra utiliser:
public void getUserInput () thumb = map (cont.getSlider ("servoPos"). getValue (), -1, 1, 0, 180);
Cette ligne de code utilise notre fichier de données pour obtenir notre contrôle nommé servoPos, qui est lié à la manette de droite du contrôleur, et lit les valeurs de celui-ci. Il mappe ensuite les valeurs et stocke la valeur dans notre pouce variable flottante.
À l'heure actuelle, ce code n'est jamais appelé, nous allons y remédier maintenant.
void draw () getUserInput (); fond (pouce, 100,255); arduino.servoWrite (10, (int) thumb);
le dessiner() est similaire à la boucle() méthode dans l'IDE Arduino. Chaque image, elle appelle la getUserInput () méthode et met à jour le pouce valeur. Il utilise cette valeur pour changer la valeur rouge du Contexte() nous donnant un indicateur visuel du changement de valeur. Il écrit ensuite cette valeur sur le servo en utilisant le arduino.servoWrite () une fonction. Notez que nous devons jeter pouce en tant que valeur entière car la fonction servoWrite prend deux nombres entiers (numéro de broche et angle) comme arguments.
Vérifiez votre code pour les erreurs, enregistrez-le et cliquez sur Exécuter. Après un léger délai pour initialiser l’Arduino, cela devrait ressembler à ceci:
Contrôle avec le contrôleur de jeu et Arduino: Terminé!
Ce projet était à bien des égards assez approfondi pour le codeur inexpérimenté. Apprendre avec le codage: 9 cours Udemy pour les programmeurs débutants Apprendre avec le codage: 9 cours Udemy pour le programmeur débutants La vraie difficulté est de trouver de bons tutoriels de programmation et des cours qui ne sont pas seulement vous apprendre les compétences nécessaires, mais le faire avec des projets pratiques. C'est là qu'Udemy intervient. Lire la suite, malgré les fantastiques bibliothèques disponibles pour nous aider. Ce qu’il représente, c’est une nouvelle façon de penser au contrôle des robots et de tout autre appareil que vous construisez..
Ce projet s’accorderait parfaitement avec notre guide sur la construction d’un Pew Pew à tourelle laser! Comment construire une tourelle laser avec un Pew Pew Arduino! Comment construire une tourelle laser avec un Arduino Vous vous ennuyez? On pourrait aussi bien construire une tourelle laser. Lisez la suite pour en avoir le plein contrôle. Vous pouvez configurer une sonnerie piézo-électrique comme dans notre système d’alarme Arduino simple. Comment créer un système d’alarme Arduino simple. Comment créer un système d’alarme Arduino simple. Cela semble-t-il amusant? Bien sûr que si. C’est l’objectif du projet Arduino d’aujourd’hui, de… Lire la suite du didacticiel et d’utiliser votre contrôleur pour modifier la hauteur de la sonnerie ou la couleur des lumières.
Ou vous pourriez, eh bien, construire un robot énorme et prendre le contrôle de la terre. Tant que vous avez eu un cordon USB assez long!
En savoir plus sur: Arduino, Contrôleur de jeu, Robotique.