Tarde, pero seguro.
Yo hace un tiempo que quería hacer algo así, para aprovechar unas palancas analógicas que tengo de joysticks de psx rotos, y para hacer un joystick para jugar al call of duty.
No se me ocurría una manera de que windows me reconociera el arduino como joystick, hasta que me acordé que un programa que usaba para conectar el joypad de sega a la pc podría servir (PPJoy).
Me puse a investigar, y tenía soporte para puerto serie con entradas analógicas y digitales.
Estuve un rato probando y después de un litro de cocacola conseguí que funcione con dos ejes, emulando una palanca de joystick. Lo probé con un par de juegos y va de maravilla.
El código es el siguiente:
byte x = 0;
byte y = 0;
int x_pin = 0;
int y_pin = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
x = analogRead(x_pin) / 6;
y = analogRead(y_pin) / 6;
Serial.print(240,BYTE);
Serial.print(x,BYTE);
Serial.print(y,BYTE);
}
Todavía no logré conseguir que me lea correctamente las pulsaciones de botones digitales (cuando está en 0, manda datos aleatoreos, pero cuando está en 1 lo manda correctamente, no sé si será ruido u otra cosa), pero creo que ya sé más o menos como solucionarlo (una solución burda, sería tratar los botones analógicamente).
Es medio complicado porque mucha información sobre el protocolo no he podido conseguir.
Por lo menos para leer datos analógicos, va mejor que un joystick comprado en una tienda.
Saludos!