Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Volant Joystick Arduino Personnalisé pour Jeux Vidéo

Composants et Fournitures

Potentiomètre rotatif×1
Arduino UNO×1
Breadboard×1

Outils Nécessaires

Logiciels

À Propos du Projet

Volant Arduino + Création Volante

Réalisation d'un volant simulant un joystick USB, utilisable sur Steam. Alternative économique aux simulateurs de conduite coûteux.

Transformer l'Arduino en Manette USB

La procédure flashe le firmware de la puce de communication USB (ATmega16U2) pour la faire reconnaître comme manette de jeu. Opération sûre et réversible.

  1. Télécharger la bibliothèque UnoJoy (inclut firmware spécial)
  2. Installer les drivers via InstallUnoJoyDrivers.bat
  3. Installer l'outil ATmel FLIP pour flasher le firmware

Flasher le Firmware

  1. Mettre l'Arduino en mode DFU : court-circuiter les deux pins près du connecteur USB (groupe de 6 pins)
  2. Exécuter TurnIntoAJoystick.bat (UnoJoy)
  3. Débrancher/rebrancher : l'Arduino apparaît comme « Joystick »
  4. Pour revenir en mode Arduino : même manipulation avec TurnIntoAnArduino.bat

Manette Simple

Un potentiomètre 10K sur pin A0 suffit. Copier UnoJoy.h dans le dossier du sketch.

Jouer sur Steam

Steam reconnaît le volant comme manette Xbox 360. Utiliser x360ce (version 32/64 bits selon le jeu) pour mapper les axes/boutons. Copier x360ce.exe dans le dossier de l'exécutable du jeu.

Tutoriel vidéo sur ma chaîne YouTube (lien dans l'article original).

Code (Firmware Joystick HID)

/* Arduino USB Joystick HID demo */
/* Auteur: Darran Hunt - Domaine public */
/* Mise à jour RICLAMER 25/03/2014 : ports analogiques et numériques */
/* Compatible Arduino UNO (6 axes, 13 boutons) et Mega */

#undef DEBUG
#define NUM_BUTTONS 40
#define NUM_AXES 8

typedef struct joyReport_t {
  int16_t axis[NUM_AXES];
  uint8_t button[(NUM_BUTTONS + 7) / 8];
} joyReport_t;

joyReport_t joyReport;
uint8_t btn[12];
int fulloff = 0;

void setup() {
  for (int portId = 2; portId < 13; portId++) {
    pinMode(portId, INPUT_PULLUP);
  }
  Serial.begin(115200);
  delay(200);
  for (uint8_t ind = 0; ind < 8; ind++) joyReport.axis[ind] = ind * 1000;
  for (uint8_t ind = 0; ind < sizeof(joyReport.button); ind++) joyReport.button[ind] = 0;
}

void sendJoyReport(struct joyReport_t *report) {
  #ifndef DEBUG
  Serial.write((uint8_t *)report, sizeof(joyReport_t));
  #else
  // Sortie debug lisible
  #endif
}

void setButton(joyReport_t *joy, uint8_t button) {
  uint8_t index = button / 8;
  uint8_t bit = button - 8 * index;
  joy->button[index] |= 1 << bit;
}

void clearButton(joyReport_t *joy, uint8_t button) {
  uint8_t index = button / 8;
  uint8_t bit = button - 8 * index;
  joy->button[index] &= ~(1 << bit);
}

void loop() {
  // Lecture boutons (pins 2-13)
  for (int bt = 1; bt < 13; bt++) btn[bt] = digitalRead(bt + 1);
  
  for (int on = 1; on < 13; on++) {
    if (btn[on] == LOW) setButton(&joyReport, on + 16);
    if (btn[on] == HIGH) clearButton(&joyReport, on + 16);
  }

  // Axes analogiques (A0 = volant = axe X)
  for (uint8_t axis = 0; axis < 2; axis++) {
    joyReport.axis[axis] = map(analogRead(axis), 350, 700, -32768, 32767);
  }
  
  // Ports non utilisés mis à 0
  joyReport.axis[2] = 0;
  joyReport.axis[3] = 0;
  joyReport.axis[4] = analogRead(A0);
  joyReport.axis[5] = analogRead(A3);
  joyReport.axis[6] = analogRead(A2);
  joyReport.axis[7] = 0;

  sendJoyReport(&joyReport);
  delay(35);
}

Pièces Personnalisées

Schéma de Câblage

Volant Joystick Arduino Personnalisé pour Jeux Vidéo

Processus de fabrication

  1. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  2. Transformez une vieille voiture RC en véhicule piloté au joystick avec Arduino
  3. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  4. Jeu interactif joystick + LEDs avec Arduino
  5. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  6. Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
  7. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  8. Portique de contrôle de température sans contact pour dépistage rapide et précis
  9. Jeu Pong sur Matrice NeoPixel avec Arduino Nano