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

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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.

Matériel requis

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing
  • 1 Arduino (UNO recommandé).
  • 1 servomoteur hobby (compatible PWM).
  • 1 manette filaire Xbox 360 (ou compatible).
  • Fils de connexion.

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

Préparation de l'Arduino

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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.

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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 !

Configuration de Processing

Ouvrez Processing. Installez les bibliothèques via Esquisse > Importer une bibliothèque > Ajouter une bibliothèque.

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

Installez : Game Control Plus (pour la manette), G4P (outil de config), Arduino (firmata). Testé sur Windows 10, compatible Raspberry Pi et plus.

Test de l'Arduino

Testez avec Fichier > Exemples > Arduino (firmata) > ArduinoServo. Décommentez println(Arduino.list()); pour lister les ports COM.

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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.

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

Si KO, revérifiez câblage et port.

Configuration de la manette

Branchez la manette, ouvrez GameControlPlus > Configurator.

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

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

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

Dossier de l'esquisse personnalisée

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

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

Création de l'esquisse

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 !

Tutoriel : Contrôlez un robot avec une manette Xbox 360 et Arduino via Processing

Contrôle avec manette et Arduino : terminé !

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.

[]