Primero necesitamos una placa Arduino o clon que son muy baratas, pero no cualquiera sino un modelo con soporte USB (que posea el chip ATmega32U4) esto permitira que windows la reconozca como un joystick usb (en vez de como un dispositivo serial como las otras)
Lista de placas Arduino compatibles
Las placas Arduino a diferencia de las LeoBodnar y otras suelen traer un solo conector de tierra(GND) y +5v comun lo que nos obliga a soldar cables o usar un PCB para sacar mas conectores.
Pero hay una excepcion la Arduino Leonardo Plus (recomendada) por 10€ viene con conexiones pin/GND/5v para cada puerto.

Cmo veis tiene dos filas de conectores indicadas con colores, la superior son las entradas digitales ,en amarillo tenemos 2,3,4,5,... , el rojo es +5v (que normalmente no usaremos) y la fila negra es tierra o GND.
Para conectar un boton basta con poner un pin en numero y otro en GND (2/GND) para poner un switch o palanca On-Off-On usariamos dos pines digitales para las posicones On y el GND(3/4/GND)
La fila inferior son las entradas analogicas (para ejes) en este tipo de conexiones usaremos habitualmente potenciometros ,la conexion usa los tres pines.
La fila amarilla a Input ,la roja a 5v y la negra a GND, en el potenciometro los pines son estos...

Con esto ya estaria la conexion fisica a la placa,sencillo verdad? pero nos falta la programacion.
Esto puede parecer mas complicado pero son unos pocos pasos.
1-Descargar Arduino IDE (el programa que se usa para comunicarse y programar y lo ejecutamos, al conectar la placa deberia reconocerla (en "herramientas"/placa se vera el modelo sino podemos seleccionarlo de un desplegable)
2-Descargar la libreria Arduino Joystick
,bajamos el .zip y lo añadimos a las librerias de Arduino (en Arduino IDE "Programa/Incluir libreria/añadir biblioteca .zip)

3-Copiar codigo y enviarlo a la placa Arduino Leonardo
En la parte superior del Arduino IDE vemos varios botones, el icono de "verificar" sirve para analizar el codigo y ver que no tiene errores, el segundo la flecha a la derecha "subir" envia el codigo a la placa.#include "Joystick.h"
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK, 12, 0,
false, false, false,
false, false, false,
false, true, true,
false, false);
void setup() {
pinMode(A2, INPUT);
pinMode(A3, INPUT);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
Joystick.begin();
}
void loop() {
// X-Axis
int xAxis = analogRead(A2);
Joystick.setXAxis(xAxis);
// Y-Axis
int yAxis = analogRead(A3);
Joystick.setYAxis(yAxis);
// Button 1
int button1State = !digitalRead(2);
if (button1State == 1)
{
Joystick.pressButton(0);
}
else
{
Joystick.releaseButton(0);
}
// Button 2
int button2State = !digitalRead(3);
if (button2State == 1)
{
Joystick.pressButton(1);
}
else
{
Joystick.releaseButton(1);
}
delay(50);
}
Una vez enviado podemos abrir el panel "dispositivos de juego" deWindows y veremos que tenemos un nuevo joystick con dos ejes y 12 botones (ojo que solo he puesto codigo para que funcionen dos botones y dos ejes, para mas solo hay que copiar/pegar y cambiar el numero de pin luego lo explico con mas detalle)

Y con esto ya tenemos nuestro joystick Arduino funcionando y por solo 10€!!
