Arduinos et les cartes compatibles similaires sont l'un des go to dispositifs pour bricoleurs bricoleurs partout. Que vous soyez un débutant débutant avec Arduino ou quelqu'un qui les utilise déjà dans votre vie, ils constituent une plateforme pour d'innombrables projets impressionnants.
Aujourd'hui, nous allons explorer une manière créative de contrôler un servo en utilisant le traitement, et un contrôleur Xbox360. Si vous êtes déjà très doué pour le développement de jeux, vous pourriez être intéressé par notre tutoriel Custom Game Controller, qui utilise Unity.
Ce tutoriel supposera une petite connaissance préalable, s'il s'agit de votre première incursion dans Arduino, vous pourriez trouver 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. Alors que Processing utilise une version simplifiée de la plate-forme, ces concepts et astuces Java peuvent toujours aider.
De quoi as-tu besoin
- 1 x Arduino. Nous utilisons un ONU aujourd'hui.
- 1 x servo de passe-temps. Tout ce qui va fonctionner avec les broches Arduino.
- 1 x contrôleur Xbox360 câblé. Bien que cela fonctionnera techniquement avec presque n'importe quel contrôleur.
- Plusieurs fils de branchement.
En plus de ces choses, vous devrez également télécharger Processing et l'IDE Arduino à partir de leurs sites Web respectifs.
Préparation de l'Arduino
Nous devons d'abord attacher notre servo. Les couleurs de câblage peuvent varier ici, mais en règle générale le rouge se fixe à la broche 5v, et le brun ou le noir se fixe à la broche GND . La ligne de données, généralement jaune ou orange, est attachée à la broche 10 .
Vérifiez votre câblage et connectez l'Arduino à l'ordinateur. Ouvrez l'IDE Arduino.
Ouvrez l'esquisse StandardFirmata située dans Fichier> Exemples> Firmata> StandardFirmata . Cette esquisse met en place la carte pour le contrôle externe sur le port série, et est le même que celui utilisé dans notre article sur le contrôle Arduino avec Python Comment programmer et contrôler un Arduino avec Python Comment programmer et contrôler un Arduino avec Python Malheureusement, 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 l'esquisse au tableau.
Si le téléchargement échoue, vérifiez que vous avez sélectionné les détails de votre carte et du port dans le menu Outils .
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. Allez dans le menu Esquisse et sélectionnez Importer la bibliothèque> Ajouter une bibliothèque . Cela fera apparaître le gestionnaire de contribution qui semblera familier à tous les utilisateurs Arduino là-bas.
Nous devons installer trois bibliothèques pour que cela fonctionne. Tout d'abord, la bibliothèque Game Control Plus . 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 l'angle inférieur droit. Game Control Plus a besoin d'une autre bibliothèque pour son outil de configuration, alors allons-y maintenant. Recherchez la bibliothèque G4P et installez-la également.
Enfin, nous avons besoin de la bibliothèque Arduino (firmata) . Vous l'avez deviné, recherchez-le et cliquez sur installer. Avec ces choses installées, nous sommes prêts à faire des tests pour que tout fonctionne. 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 plonger dans la création d'une esquisse personnalisée, testons l'Arduino et le Servo avec Processing. Ouvrez Fichier> Exemples et sélectionnez ArduinoServo dans le dossier Bibliothèques fournies / Arduino (firmata) . Nous allons l'utiliser pour tester notre servo, mais nous devons d'abord changer quelques choses.
Faites défiler vers le bas à travers l'esquisse et trouvez cette ligne:
println(Arduino.list());
S'il est commenté, supprimez les deux barres obliques avant println (Arduino.list ()); et sauvegardez l'esquisse. Exécutez-le, en cliquant sur l'icône de lecture, et gardez un œil sur la console en bas. Cela liste tout ce qui est attaché à vos ports COM .
Dans mon cas, mon Arduino était sur COM 8, qui était le troisième port répertorié ici. Ceci est important car le code de la ligne ci-dessous a un tableau dont la valeur détermine quel port COM utiliser.
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 faire quelques autres petites modifications à ce code pour le tester. Faites défiler jusqu'à l'emplacement des broches Arduino 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 la méthode Draw () :
arduino.servoWrite(10, constrain(mouseX / 2, 0, 180)); // arduino.servoWrite(4, constrain(180 - mouseX / 2, 0, 180));
Enregistrez l'esquisse et exécutez-la. Vous devriez être capable de déplacer votre servo en déplaçant votre souris d'avant en arrière à travers la fenêtre que le programme génère.
Si cela ne fonctionne pas pour vous, vérifiez votre câblage Servo, et vérifiez que vous avez la bonne position de tableau 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 est également dotée d'une puissante configuration. Assurez-vous que votre contrôleur est branché, ouvrez le projet d'exemple Configurator 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 sembler assez décourageant, 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 en tant que variable. Cette variable va contrôler 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érience montre que le stick analogique droit correspond à la case X Rotation. Faites glisser une ligne entre la variable servoPos et cette zone.
Maintenant, nous devons enregistrer notre configuration en tant que fichier de données. En haut à droite de la fenêtre, remplissez le champ Rôle du périphérique et le champ Nom du fichier .
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 sur Enregistrer . Cela écrit un fichier avec des instructions pour notre contrôleur que nous pouvons utiliser plus tard.
Préparation du dossier d'esquisse personnalisé
Configurons notre dossier de travail. Ouvrez une esquisse de traitement vierge et enregistrez-la sous le nom que vous voulez. Cela va créer un répertoire pour cela dans l'emplacement de sauvegarde.
Maintenant naviguez vers Documents / Processing / bibliothèques / GameControlPlus / examples / Configurateur et copiez le dossier étiqueté data . Ce dossier contient le fichier de configuration que nous venons de créer. Accédez au répertoire de votre nouvelle esquisse vierge 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 parcourir cette étape étape par étape, mais vous pouvez télécharger le croquis complet et le dossier de données si vous voulez aller de l'avant. Notez que vous devrez peut-être 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.*; import org.gamecontrolplus.*; import org.gamecontrolplus.gui.*; import cc.arduino.*; import org.firmata.*;
Nous devons également déclarer notre ControlDevice, I / O et Arduino, ainsi qu'un flottant pour conserver les valeurs de notre sticker:
ControlDevice cont; ControlIO control; Arduino arduino; float thumb;
Notre méthode setup () 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() { size(360, 200); control = ControlIO.getInstance(this); cont = control.getMatchedDevice("xbs"); if (cont == null) { println("not today chump"); // write better exit statements than me 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 en cas de besoin. Bien que la fenêtre créée avec size () ne soit pas nécessaire, elle nous donnera plus tard des informations sur la façon dont nous obtenons des valeurs utiles de notre contrôleur. Nous initialisons aussi notre Arduino et épinglons ici comme nous l'avons fait pendant les tests.
Maintenant nous créons une petite méthode pour saisir 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 servoPos de contrôle nommé, qui est lié au mini-manche droit du contrôleur, et lire des valeurs à partir de celui-ci. Il mappe ensuite les valeurs et stocke la valeur dans notre variable float.
À l'heure actuelle, ce code n'est jamais appelé, nous allons le réparer maintenant.
void draw() { getUserInput(); background(thumb, 100, 255); arduino.servoWrite(10, (int)thumb); }
Le draw () est similaire à la méthode loop () dans l'IDE Arduino. A chaque trame, il appelle la méthode getUserInput () et met à jour la valeur du pouce . Il utilise cette valeur pour changer la valeur rouge de l' arrière - plan () en nous donnant un indicateur visuel du changement de valeur. Il écrit ensuite cette valeur sur le servo à l'aide de la fonction arduino.servoWrite () . Notez que nous devons convertir le pouce en valeur entière car la fonction servoWrite prend deux entiers (nombre de broches 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 d'initialisation de l'Arduino, cela devrait ressembler à ceci:
Contrôle avec contrôleur de jeu et Arduino: Terminé!
Ce projet était de plusieurs façons assez approfondi pour le codeur inexpérimenté. Apprendre avec des projets de codage: 9 Cours Udemy pour le programmeur débutant Apprendre avec des projets de codage: 9 Cours Udemy pour le programmeur débutant La vraie difficulté est de trouver de bons didacticiels et cours non seulement vous enseigner les compétences nécessaires, mais le faire avec des projets pratiques. C'est là que Udemy intervient. En savoir plus, malgré les fantastiques bibliothèques disponibles pour nous aider. Ce que cela représente est une nouvelle façon de penser à contrôler les robots et tous les autres dispositifs que vous construisez.
Ce projet irait parfaitement avec notre guide sur la construction d'un Pew Pew Laser Turret! Comment construire une tourelle laser avec un Pew Arduino Pew! Comment construire une tourelle laser avec un Arduino Êtes-vous ennuyé? Autant construire une tourelle laser. Lire la suite, vous donnant un contrôle total sur elle. Vous pouvez configurer un buzzer piézo comme dans notre alarme Arduino simple Comment faire un système d'alarme Arduino simple Comment faire un système d'alarme Arduino simple Détecter le mouvement, puis effrayer le diable d'un intrus avec une alarme aiguë et des lumières clignotantes. Cela vous semble-t-il amusant? Bien sûr que oui. C'est l'objectif du projet Arduino d'aujourd'hui, adapté ... Lire la suite tutoriel et utilisez votre contrôleur pour modifier la hauteur de la sonnerie ou la couleur des lumières.
Ou vous pourriez, bien, construire un robot massif et prendre le contrôle de la terre. Tant que vous avez un câble USB assez longtemps!