Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Construye un volante joystick personalizado con Arduino para gaming

Componentes y materiales

ComponenteCantidad
Potenciómetro rotativo 10kΩ1
Arduino UNO1
Protoboard1

Herramientas y máquinas

Aplicaciones y servicios

Sobre el proyecto

Volante Arduino + Flying Creation

Este proyecto convierte un Arduino UNO en un mando USB tipo joystick reconocible por el sistema operativo, ideal para simuladores de carreras en Steam. La idea surgió porque los volantes comerciales son caros y quería una alternativa DIY.

Construye un volante joystick personalizado con Arduino para gaming

¿Cómo convertir Arduino en un mando USB?

Se flashea el chip de comunicación del Arduino (ATmega16U2) con el firmware UnoJoy. El proceso es seguro y reversible.

  1. Descarga la última versión de UnoJoy.
  2. Instala los drivers ejecutando InstallUnoJoyDrivers.bat.
  3. Instala la herramienta ATmel FLIP (necesaria para flashear el firmware).

Flashear el firmware

  1. Pon el Arduino en modo DFU: haz un puente entre los dos pines más cercanos al conector USB (grupo de 6 pines). Los LEDs parpadearán brevemente.
  2. Ejecuta TurnIntoAJoystick.bat de la carpeta UnoJoy.
  3. Desconecta y reconecta el Arduino: ahora aparecerá como "Joystick" en el administrador de dispositivos.
  4. Para revertir, repite el puente y ejecuta TurnIntoAnArduino.bat.

Mando simple (volante)

Conecta el potenciómetro de 10kΩ al pin A0 (terminal central al pin, laterales a 5V y GND). Copia el archivo UnoJoy.h a la carpeta del sketch.

Construye un volante joystick personalizado con Arduino para gaming

Jugar en Steam

Steam reconoce mandos tipo Xbox 360. Usa x360ce (versión 32 o 64 bits según el juego) para mapear el joystick USB a un mando virtual Xbox 360. Copia x360ce.exe en la carpeta del ejecutable del juego y configúralo.

Código

El sketch usa la librería UnoJoy y envía los valores del potenciómetro como eje X. El código completo está en el repositorio del proyecto.

/* Arduino USB Joystick HID demo */
/* Autor: Darran Hunt, actualizado por RICLAMER 25/03/2014 */
/* Compatible con Arduino UNO (6 ejes, 13 botones) y 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
  // Salida legible para depuración
  #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() {
  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);
  }
  // Ejes analógicos (solo A0 para el volante)
  for (uint8_t axis = 0; axis < 2; axis++) {
    joyReport.axis[axis] = map(analogRead(axis), 350, 700, -32768, 32767);
  }
  // Ejes no usados a 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);
  fulloff = 0;
}

Archivos CAD

Esquemático

Construye un volante joystick personalizado con Arduino para gaming

Proceso de manufactura

  1. Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
  2. Transforma un viejo coche RC en un vehículo controlado por joystick con Arduino
  3. Construye un Iron Man animado con Arduino: componentes, sensores y guía paso a paso
  4. Juego interactivo con joystick analógico y LEDs en Arduino
  5. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  6. Construye un Brazo Robótico Impreso en 3D Controlado por Arduino – Guía Paso a Paso
  7. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  8. Puerta de control de temperatura sin contacto para detección rápida y precisa
  9. Pong Neón en Matriz NeoPixel con Arduino Nano
  10. Construye un Receptor FM Potente con Arduino y Módulo TEA5767
  11. Arduino 101: Construye un Podómetro con Sensor DHT11 y Pantalla LCD