Comment contrôler un robot à l’aide d’un contrôleur de jeu et d’Arduino
Les Arduinos et les cartes compatibles similaires sont l’un des appareils de choix pour les bricoleurs du monde entier. Que vous soyez un débutant débutant avec Arduinos ou quelqu’un qui les utilise déjà 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 les servos à l’aide de Processing et d’une manette Xbox360. Si vous maîtrisez déjà le développement de jeux, vous pourriez être intéressé par notre contrôleur de jeu personnalisé avec le didacticiel Unity.
Ce didacticiel supposera certaines connaissances préalables, et si c’est la première fois que vous essayez le violon Arduino, vous trouverez peut-être notre guide Arduino utile ici. Encore une fois, 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 techniques Java peuvent toujours être utiles.
de quoi avez-vous besoin
- 1Arduino. Nous utilisons UNO aujourd’hui.
- 1 servomoteur de loisir. Tout ce qui fonctionne avec les broches Arduino.
- 1 manette Xbox360 filaire. Bien que cela s’applique techniquement à presque tous les contrôleurs.
- Plusieurs lignes de liaison.
En plus de ces éléments, vous devrez également télécharger Processing et l’IDE Arduino à partir de leurs sites Web respectifs.
Faire une vidéo du jour
Préparation de l’Arduino
Tout d’abord, nous devons connecter notre servo.Les couleurs de câblage peuvent varier ici, mais en règle générale rouge attaché à 5v épingle, et marron ou Le noir attaché à sol épingler.ligne de données, généralement jaune ou mandarineattaché à broche 10.
Vérifiez le câblage et connectez l’Arduino à l’ordinateur. Ouvrez l’IDE Arduino.
Ouvrez l’esquisse StandardFirmata située à Fichier > Exemples > Firmata > StandardFirmataCe croquis configure la carte pour le contrôle externe du port série, le même que celui que nous avons utilisé dans l’article Contrôler Arduino avec Python. Téléchargez le croquis sur le tableau.
Si le téléchargement échoue, vérifiez que vous êtes outil menu.
Notre Arduino est prêt !
ensemble de traitement
Ouvrez Processing et vous verrez une esquisse vierge. Avant de pouvoir faire quoi que ce soit ici, nous devons installer certaines bibliothèques.aller à esquisser menu et sélectionnez Importer des bibliothèques > Ajouter des bibliothèques. Cela fera apparaître Gestionnaire des contributions Cela semblera familier à tout utilisateur d’Arduino.
Nous devons installer trois bibliothèques pour que cela fonctionne.d’abord Contrôle du jeu Plus bibliothèque. Cela nous permettra d’utiliser notre contrôleur de jeu avec le traitement. Utilisez la fenêtre de recherche pour le trouver et 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, alors commencez maintenant.chercher G4P bibliothèque et installez-la.
Enfin, nous avons besoin Arduino (micrologiciel) bibliothèque. Vous l’avez deviné, recherchez-le et cliquez sur installer. Une fois ces choses installées, nous sommes prêts à passer au test que tout fonctionne. Nous utilisons Windows 10 aujourd’hui, mais la plupart des plates-formes peuvent le gérer, y compris le Raspberry Pi. Imaginez les possibilités !
Testez l’Arduino
Avant de commencer à créer des croquis personnalisés, testons l’Arduino et le servo avec traitement.Ouvrir Fichier > Exempleet sélectionnez Servomoteur Arduino à partir de Bibliothèques contribuées/Arduino (firmata) dossier. Nous allons l’utiliser pour tester nos servos, mais nous devrons peut-être d’abord modifier quelques éléments.
Faites défiler l’esquisse et trouvez cette ligne :
println(Arduino.list());
En cas de commentaire, supprimez les deux barres obliques précédentes 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 toutes les pièces jointes à votre la communication Port.
Dans mon cas, mon Arduino est sur COM 8, qui est le troisième port répertorié ici.Ceci est important car le code dans la ligne ci-dessous a un en grand nombre Sa valeur détermine quel port COM est utilisé.
Nous devons le changer pour refléter notre port COM. Pour moi c’est 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 définies et commentez l’une des lignes là-bas.changer l’autre en broche 10.
//arduino.pinMode(4, Arduino.SERVO);
arduino.pinMode(10, Arduino.SERVO);
nous devons le faire Peinture() méthode:
arduino.servoWrite(10, contrainte(mouseX / 2, 0, 180));
// arduino.servoWrite(4, contrainte(180 – mouseX / 2, 0, 180));
Enregistrez l’esquisse, puis exécutez-la. Vous devriez pouvoir déplacer le servo en déplaçant la souris d’avant en arrière sur la fenêtre générée de manière procédurale.
Si cela ne fonctionne pas pour vous, vérifiez le câblage de votre servo et vérifiez que vos ports COM sont dans la bonne position de matrice. Une fois que vous savez que l’Arduino a une bonne conversation avec Processing, il est temps de passer à autre chose.
Configurer le contrôleur
La bibliothèque Game Control Plus que nous utilisons est également livrée avec une configuration puissante.Assurez-vous que votre contrôleur est branché, allumez 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 plus grande apparaîtra.
Cela peut sembler assez intimidant, mais il est conçu pour être aussi simple que possible. Remplissez la première clé à gauche avec le nom que vous voulez comme variable.Cette variable contrôlera la position du servo, donc je vais l’appeler Position des servos.
Dans la case à côté, vous pouvez décrire brièvement ce qu’il fait. Saisissez maintenant votre contrôleur et déplacez le joystick que vous souhaitez utiliser avec le servo. Une petite expérience montre que le joystick droit correspond à la boîte de sélection numérique X.tracer une ligne entre Position des servos variables, et cette case.
Nous devons maintenant enregistrer la configuration sous forme de fichier de données.Dans le coin supérieur droit de la fenêtre, remplissez Rôle de l’appareil terrain et nom de fichier placer.
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 enregistrerCela écrit un fichier pour notre contrôleur avec des instructions que nous pourrons utiliser plus tard.
Préparer un dossier de croquis personnalisé
Configurons notre dossier de travail. Ouvrez une esquisse de processus vierge et enregistrez-la sous le nom de votre choix. Cela créera un répertoire pour lui dans l’emplacement de sauvegarde.
naviguez maintenant vers Documents/Traitement/bibliothèques/GameControlPlus/exemples/Configurateur et copiez le dossier marqué comme Les donnéesCe dossier contient le fichier de configuration que nous venons de créer. Accédez au répertoire de l’esquisse vierge nouvellement enregistrée et collez le dossier de données.
Créer des croquis personnalisés
Maintenant que tout est en place, nous pouvons commencer à faire des croquis en utilisant nos deux bibliothèques. Nous allons parcourir cette étape par étape, mais vous pouvez télécharger le dossier complet de croquis et de données si vous souhaitez continuer. Notez que vous devrez peut-être encore modifier le code pour refléter votre port COM Arduino.
Importez d’abord toutes les bibliothèques dont nous avons besoin :
import handle.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 dispositif de contrôle, entrée sortieet Arduinoaccompagné d’un flotter Enregistrez la valeur de notre vignette :
l’équipement de contrôle a continué ;
Contrôle ControlIO ;
Arduino ; Arduino ;
pouce flottant;
notre d’installation() La méthode crée un widget, une instance de contrôleur et fait correspondre l’appareil à notre fichier de configuration. Voici ce qui est important pour que le nom de fichier de notre fichier de données de configuration soit correct :
void set() {
taille (360, 200);
control = ControlIO.getInstance(this);
cont = control.getMatchedDevice(« xbs »);
si (suite == null) {
println(« Pas l’idiot d’aujourd’hui »); // écris une meilleure déclaration 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 qu’il n’y a pas de contrôleurs applicables à ce stade et quittons le programme si nécessaire.Pendant que la fenêtre créée est Taille() Non, cela nous donnera un retour plus tard si nous obtenons des valeurs utiles du contrôleur. Nous avons également initialisé notre Arduino et nos broches comme nous l’avons fait lors des tests.
Maintenant, nous créons une petite méthode pour prendre la valeur d’entrée de notre contrôleur et la mapper à la valeur 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 nos contrôles nommés Position des servos, qui est lié au joystick droit du contrôleur et en lit les valeurs.Ensuite, il mappe la valeur et stocke la valeur dans notre pouce variable flottante.
Maintenant, ce code n’est jamais appelé, nous allons le corriger maintenant.
void draw() {
obtenir l’entrée utilisateur ();
fond (pouce, 100, 255);
arduino.servoWrite(10, (int)pouce);
}
Ce Peinture() semblable à bague() méthode dans l’IDE Arduino.Chaque image, il appelle obtenir l’entrée de l’utilisateur() méthode et mise à jour pouce évaluer.Il utilise cette valeur pour changer la valeur du rouge Contexte() Nous donne un indicateur visuel du changement de valeur.alors il utilise arduino.servoWrite() Une fonction.Notez que nous devons lancer pouce En tant que valeur entière, 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 retard dans l’initialisation de l’Arduino, cela devrait ressembler à ceci :
Contrôle avec Game Controller et Arduino : terminé !
Bien qu’il existe d’excellentes bibliothèques pour nous aider, à bien des égards, ce projet est assez approfondi pour les codeurs inexpérimentés. 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 fonctionnera 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 piézo comme dans notre didacticiel d’alarme Arduino simple et utiliser votre contrôleur pour modifier la hauteur du buzzer ou la couleur de la lumière.
Ou vous pourriez, eh bien, construire un robot géant et conquérir la planète. A condition d’avoir un câble USB suffisamment long !
…