Les cartes Arduino et compatibles sont des outils incontournables pour les makers du monde entier. Que vous soyez débutant ou expérimenté, elles offrent une plateforme idéale pour des projets innovants et captivants.
Aujourd'hui, découvrez comment contrôler un servomoteur – et par extension un robot – à l'aide de Processing et d'une manette Xbox 360. Si vous êtes passionné de développement de jeux, consultez aussi notre tutoriel sur la manette de jeu personnalisée avec Unity.
Ce tutoriel suppose des bases en Arduino et Java. Pour les novices, notre guide Arduino pour débutants et nos astuces Java sont recommandés. Processing simplifie Java, mais les fondamentaux restent essentiels.

Installez aussi l'IDE Arduino et Processing depuis leurs sites officiels.

Connectez le servomoteur : fil rouge sur 5V, marron/noir sur GND, jaune/orange (signal) sur la broche 10.
Vérifiez les connexions, branchez l'Arduino et ouvrez l'IDE.

Chargez l'esquisse Fichier > Exemples > Firmata > StandardFirmata. Elle permet le contrôle série externe, comme dans notre tutoriel Python-Arduino. Téléversez-la. Si erreur, vérifiez carte/port dans Outils.
Votre Arduino est prêt !
Ouvrez Processing. Installez les bibliothèques via Esquisse > Importer une bibliothèque > Ajouter une bibliothèque.

Installez : Game Control Plus (pour la manette), G4P (outil de config), Arduino (firmata). Testé sur Windows 10, compatible Raspberry Pi et plus.
Testez avec Fichier > Exemples > Arduino (firmata) > ArduinoServo. Décommentez println(Arduino.list()); pour lister les ports COM.

Ajustez arduino = new Arduino(this, Arduino.list()[2], 57600); (indice du port, ex. 2 pour COM8).

Configurez la broche 10 :
//arduino.pinMode(4, Arduino.SERVO);
arduino.pinMode(10, Arduino.SERVO);Et dans draw() :
arduino.servoWrite(10, constrain(mouseX / 2, 0, 180));
// arduino.servoWrite(4, constrain(180 - mouseX / 2, 0, 180));Exécutez : bougez la souris pour tester le servo.

Si KO, revérifiez câblage et port.
Branchez la manette, ouvrez GameControlPlus > Configurator.

Sélectionnez-la pour la fenêtre détaillée.

Créez servoPos (description optionnelle). Liez au stick droit (X Rotation).

Nommez le rôle/fichier (xbs), Vérifier puis Enregistrer.

Créez une esquisse vide. Copiez le dossier data de Documents/Processing/libraries/GameControlPlus/examples/Configurator vers votre projet.

Imports :
import processing.serial.*;
import net.java.games.input.*;
import org.gamecontrolplus.*;
import org.gamecontrolplus.gui.*;
import cc.arduino.*;
import org.firmata.*;Déclarations :
ControlDevice cont;
ControlIO control;
Arduino arduino;
float thumb;setup() :
void setup() {
size(360, 200);
control = ControlIO.getInstance(this);
cont = control.getMatchedDevice("xbs");
if (cont == null) {
println("Aucun contrôleur trouvé.");
System.exit(-1);
}
// println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[2], 57600);
arduino.pinMode(10, Arduino.SERVO);
}Fonction input :
public void getUserInput() {
thumb = map(cont.getSlider("servoPos").getValue(), -1, 1, 0, 180);
}draw() :
void draw() {
getUserInput();
background(thumb, 100, 255);
arduino.servoWrite(10, (int)thumb);
}Exécutez : le fond change et le servo suit le stick !

Projet avancé mais accessible grâce aux bibliothèques. Idéal pour robotiser : tourelle laser, alarme avec buzzer, ou robot géant (avec USB long !). Consultez nos tutos connexes.
[]