FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Les Arduinos et les cartes compatibles similaires sont l'un des appareils incontournables pour les bricoleurs du monde entier. Que vous soyez un débutant qui débute avec Arduino ou quelqu'un qui les a déjà utilisés dans votre vie, ils fournissent une plate-forme pour d'innombrables projets impressionnants.

Aujourd'hui, nous allons explorer une manière créative de contrôler un servo à l'aide de Processing et d'une manette Xbox360. Si vous maîtrisez déjà bien le développement de jeux, vous pourriez être intéressé par notre didacticiel sur la manette de jeu personnalisée, qui utilise Unity.

Ce tutoriel supposera un peu de connaissances préalables, s'il s'agit de votre première incursion dans le violon Arduino, vous trouverez peut-être notre guide Arduino utile ici. De même, si c'est la première fois que vous utilisez Java, cela peut être un peu déroutant. Bien que Processing utilise une version simplifiée de la plate-forme, ces concepts et astuces Java peuvent toujours être utiles.

 ce dont vous avez besoin

Comment contrôler des robots avec un contrôleur de jeu et Arduino
  • 1 Arduino. Nous utilisons un UNO aujourd'hui.
  • 1 servo de loisir. Tout ce qui fonctionnera avec les broches Arduino.
  • 1 x manette filaire Xbox360. Bien que cela fonctionne techniquement avec presque n'importe quel contrôleur.
  • Plusieurs fils de connexion.

En plus de ces éléments, vous devrez également télécharger Processing et l'IDE Arduino à partir de leurs sites Web respectifs.

Préparation de l'Arduino

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Nous devons d'abord attacher notre servo. Les couleurs de câblage peuvent varier ici, mais en règle générale rouge se branche sur le 5v épingle et marron ou noir attacher au GND épingler. La ligne de données, qui est généralement jaune ou orange , se connecte à la broche 10 .

Vérifiez votre câblage et connectez l'Arduino à l'ordinateur. Ouvrez l'IDE Arduino.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Ouvrez l'esquisse StandardFirmata située dans Fichier > Exemples > Firmata > StandardFirmata . Ce croquis configure la carte pour un contrôle externe sur le port série, et est le même que celui que nous avons utilisé dans notre article sur le contrôle d'Arduino avec Python. Téléchargez le croquis sur le tableau.

Si le téléchargement échoue, vérifiez que vous avez sélectionné les bons détails de carte et de port dans les Outils menu.

Notre Arduino est prêt à fonctionner !

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 croquis et sélectionnez Importer une bibliothèque > Ajouter une bibliothèque . Cela fera apparaître le gestionnaire de contribution qui semblera familier à tous les utilisateurs d'Arduino.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Nous devons installer trois bibliothèques pour que cela fonctionne. Le premier est le Game Control Plus bibliothèque. C'est ce qui va nous permettre d'utiliser notre manette de jeu avec Processing. Utilisez la fenêtre de recherche pour le trouver et cliquez sur installer dans le coin inférieur droit. Game Control Plus a besoin d'une autre bibliothèque installée pour son outil de configuration, alors allons-y maintenant. Recherchez le G4P bibliothèque et installez-la aussi.

Enfin, nous avons besoin de l'Arduino (firmata) bibliothèque. Vous l'avez deviné, recherchez-le et cliquez sur installer. Une fois ces choses installées, nous sommes prêts à tester que tout fonctionnera. Nous travaillons avec Windows 10 aujourd'hui, mais le traitement est disponible pour la plupart des plates-formes, y compris Raspberry Pi. Imaginez les possibilités !

Tester l'Arduino

Avant de plonger dans la création d'un croquis personnalisé, testons l'Arduino et le servo avec traitement. Ouvrir Fichier> Exemples , et sélectionnez ArduinoServo des bibliothèques contributives/Arduino (firmata) dossier. Nous allons l'utiliser pour tester notre servo, mais nous devrons peut-être d'abord changer quelques éléments.

Faites défiler l'esquisse et trouvez cette ligne :

println(Arduino.list()); 

S'il est commenté, supprimez les deux barres obliques avant println(Arduino.list()); , et enregistrez l'esquisse. Lancez-le en cliquant sur l'icône de lecture et gardez un œil sur la console en bas. Cela listera tout ce qui est attaché à votre COM ports.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

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.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Nous devons changer cela pour refléter notre port COM. Pour moi, c'était la troisième position, ou l'indice numéro 2 :

arduino =new Arduino(this, Arduino.list()[2], 57600); 

Nous devons apporter quelques autres petites modifications à ce code pour le tester. Faites défiler jusqu'à l'endroit où les broches Arduino sont configurées et commentez l'une des lignes ici. Changez l'autre en Pin 10 .

//arduino.pinMode(4, Arduino.SERVO); 
arduino.pinMode(10, Arduino.SERVO);

Nous devons faire la même chose dans le Draw() méthode :

arduino.servoWrite(10, contrainte(mouseX / 2, 0, 180)); 
// arduino.servoWrite(4, contrainte(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.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

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 le traitement, il est temps de passer à autre chose.

Configuration du contrôleur

La bibliothèque Game Control Plus que nous utilisons est également livrée avec une configuration puissante. Assurez-vous que votre manette est branchée, ouvrez le Configurateur exemple de projet et exécutez-le. Vous obtiendrez un menu comme celui-ci :

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Cliquez sur le nom de votre contrôleur et une fenêtre de configuration beaucoup plus grande apparaîtra.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Cela peut sembler 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 contrôlera la position du servo, donc je vais l'appeler servoPos .

Dans la case à 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. Une petite expérimentation montre que le stick analogique droit correspond à la case X Rotation. Faites glisser une ligne entre les servoPos variable, et cette case.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Nous devons maintenant enregistrer notre configuration sous forme de fichier de données. En haut à droite de la fenêtre, renseignez le rôle de l'appareil champ et le nom de fichier champ.

Le nom de fichier est important, car vous l'utiliserez dans votre code. Je reste simple en l'appelant xbs . Cliquez sur Vérifier puis Enregistrer . Cela écrit un fichier avec des instructions pour notre contrôleur que nous pourrons utiliser plus tard.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Préparation du dossier de croquis personnalisé

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 lui dans l'emplacement de sauvegarde.

Accédez maintenant à Documents/Processing/libraries/GameControlPlus/examples/Configurator et copiez le dossier intitulé data . Ce dossier contient le fichier de configuration que nous venons de créer. Accédez au répertoire de votre croquis vierge nouvellement enregistré et collez le dossier de données.

Comment contrôler des robots avec un contrôleur de jeu et Arduino

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 suivre cette étape par étape, mais vous pouvez télécharger le dossier complet de croquis et de données si vous voulez aller de l'avant. Notez que vous devrez peut-être encore 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.* ;
import org.firmata.* ;

Nous devons également déclarer notre ControlDevice , E/S , et Arduino , avec un flottant pour conserver les valeurs de notre thumbstick :

ControlDevice cont ; 
Contrôle ControlIO ;
Arduino arduino;
pouce flottant ;

Notre configuration() La méthode crée une petite fenêtre, une instance du contrôleur, et fait correspondre le périphérique avec notre fichier de configuration. C'est là 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");
si (suite ==null) {
println("pas aujourd'hui idiot"); // écrire de meilleures instructions de sortie que moi
System.exit(-1);
}
// println(Arduino.list());
arduino =nouvel 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 size() n'est pas nécessaire, cela nous indiquera plus tard si nous obtenons des valeurs utiles de notre contrôleur. Nous initialisons également notre Arduino et l'épinglons ici comme nous l'avons fait lors des tests.

Nous créons maintenant 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() { 
pouce =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 droite du contrôleur, et en lit les valeurs. Il mappe ensuite les valeurs et stocke la valeur dans notre pouce variable flottante.

Pour le moment, ce code n'est jamais appelé, nous allons corriger cela maintenant.

void draw() { 
getUserInput();
arrière-plan (pouce, 100, 255);
arduino.servoWrite(10, (int)pouce);
}

Le dessin() est similaire à la loop() méthode dans l'IDE Arduino. À chaque image, il appelle getUserInput() méthode et met à jour le pouce évaluer. Il utilise cette valeur pour changer la valeur rouge de background() nous donnant un indicateur visuel de l'évolution de la valeur. Il écrit ensuite cette valeur sur le servo en utilisant arduino.servoWrite() une fonction. Notez que nous devons jeter le pouce comme une valeur entière car la fonction servoWrite prend deux 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, il devrait ressembler à ceci :

Comment contrôler des robots avec un contrôleur de jeu et Arduino

Contrôle avec contrôleur de jeu et Arduino :terminé !

Ce projet était à bien des égards assez approfondi pour le codeur inexpérimenté, malgré les fantastiques bibliothèques disponibles pour nous aider. Cela représente une nouvelle façon de penser au contrôle des robots et de tout autre appareil que vous construisez.

Ce projet irait parfaitement avec notre guide sur la construction d'une tourelle laser, vous donnant un contrôle total sur celle-ci. Vous pouvez configurer un buzzer Piezo comme dans notre didacticiel d'alarme Arduino simple et utiliser votre contrôleur pour modifier la hauteur du buzzer ou la couleur des lumières.

Ou vous pourriez, eh bien, construire un énorme robot et conquérir la terre. Tant que vous aviez un cordon USB assez long !


[]