Conecta un Joystick
Seguro que todavía tienes por casa un viejo joystick o gamepad de cuando jugabas en tu PC viejo ... de esos que en vez de conector USB tenían un conector serie DB-15. Pues bien ... ya lo puedes desempolvar y conectarlo a tu Arduino para lo que necesites.
Lo primero ... montarse un cable según el siguiente esquema:
Figura 1. Esquema de conexionado
Así es como me ha quedado a mi:
Figuras 2 y 3. Visión del cable finalizado
Y lo puedo utlizar para joystick/gamepad analógicos y digitales de 2 o 4 botones:
Figuras 4 y 5. Gamepad y Joystick conectado a la placa Arduino
Figuras 6. Probándolo con un Joystick analógico de 2 botones
Código fuente
/*
Comprobador de un Gamepad/Joystick para PC con
un conector DB-15
Configuración de los pines del puerto de joystick
(male connector on joystick cable)
.-----------------------.
\ 8 7 6 5 4 3 2 1 /
\ 15 14 13 12 11 10 9 /
~~~~~~~~~~~~~~~~~~~
1 XY1 (+5v)
2 Switch 1
3 X1
4 Ground (for switch 1)
5 Ground (for switch 2)
6 Y1
7 Switch 2
8 N.C.
9 XY2 (+5v)
10 Switch 3
11 X2
12 Ground (for switch 3&4) *
13 Y2
14 Switch 4
15 N.C. *
Joystick B ____ Joystick A
/ |
/ |
/ |
/ 1 |
| O------- 5 Volt
5 Volt -------O |
| 9 2 |
| O------- Button
Button -------O |
| 10 3 |
| O------- Resistor X-axis
Resistor X-axis -------O |
| 11 4 |
| O------- Ground
MIDI TXD -------O |
| 12 5 |
| O------- Ground
Resistor Y-axis -------O |
| 13 6 |
| O------- Resistor Y-axis
Button -------O |
| 14 7 |
| O------- Button
MIDI RXD -------O |
| 15 8 |
| O------- 5 Volt
\ |
\ |
\ |
\ |
\__|
Pin Joystick Fucntion Paddle Function Din6 MIDI
1 +5.0 VDC L5 -
2 Joystick A Fire Button 1 Paddle #1 Fire Button L4 -
3 Joystick A X Position (Roll) Paddle #1 Position L1 -
4 Ground L3 -
5 Ground L3 GND
6 Joystick A Y Postion (Pitch) Paddle #2 Position L2 -
7 Joystick A Fire Button 2 Paddle #2 Fire Button L6 -
8 +5.0VDC L3 +5V
9 +5.0VDC R3 -
10 Joystick B Fire Button 1 Paddle #3 Fire Button R4 -
11 Joystick B X Postion Paddle #3 Position R1 -
12 Ground R3 DOut
13 Joystick B Y Position Paddle #4 Postion R2 -
14 Joystick B Fire Button 2 Paddle #4 Fire Button R6 -
15 +5.0 VDC R5 DIn
Igor González Martín. 18-03-2007
igor.gonzalez.martin@gmail.com
*/
int joyX = 0; // Eje X del joystick
int joyY = 1; // Eje Y del joystick
int boton1= 4; // Botón 1 del joystick
int boton2= 5; // Botón 2 del joystick
int boton3= 6; // Botón 3 del joystick
int boton4= 7; // Botón 4 del joystick
int valX=0;
int valY=0;
int bot1Val=0;
int bot2Val=0;
int bot3Val=0;
int bot4Val=0;
void setup(){
Serial.begin(9600);
pinMode (boton1,INPUT);
pinMode (boton2,INPUT);
pinMode (boton3,INPUT);
pinMode (boton4,INPUT);
}
void loop () {
valX=analogRead(joyX);
valY=analogRead(joyY);
bot1Val=digitalRead(boton1);
bot2Val=digitalRead(boton2);
bot3Val=digitalRead(boton3);
bot4Val=digitalRead(boton4);
Serial.println("--------------------------");
Serial.print("X: ");
Serial.print(valX);
Serial.print(" - Y: ");
Serial.println(valY);
Serial.print("Boton1: ");
Serial.println(bot1Val);
Serial.print("Boton2: ");
Serial.println(bot2Val);
Serial.print("Boton3: ");
Serial.println(bot3Val);
Serial.print("Boton4: ");
Serial.println(bot4Val);
delay (1000);
}
by Igor González Martín 21-03-2007