Contenidos
Introducción al Joystick para Arduino
Principio de funcionamiento
El joystick para Arduino es un mando analógico similar a los que posee el Dualshock de la Play Station, este dispositivo nos permite tres entradas, dos variables analógicas que controlan la posición en X y en Y y una digital al pulsar el botón. Las aplicaciones pueden ser tantas como imaginemos desde controlar cualquier robot, incluso crear música o como driver para pantallas LCDs.
Aquí mostraremos un pequeño programa para configurar y obtener los valores de dicho dispositivo.
Conexionado del Joystick
Dispone de cinco pines dos de alimentación y tres que serán las salidas.
- GND: Al GND de Arduino.
- +5V: Alimentación, cinco 5V Arduino.
- VRx: Salida Analógica del eje X 0-5V, estando en 2,5V cuando se encuentra centrado
- VRy: Salida analógica del eje Y, similar a la anterior.
- SW: (Switch) 0 generalmente y 1 al pulsar el botón central.
Características del Joystick Analógico
Tensión de Trabajo | 5V DC |
Dimensiones | 4.0 cm x 2.6 cm x 3.2 cm |
Conexión del Joystick analógico para Arduino
Diseño de prototipado del Joystick con Arduino Mega
Esquema eléctrico de Joystick con un Arduino Mega
Programación del Joystick
Explicación Previa
Como podemos observar en el conexionado, alimentamos nuestro Joystick usando la salida +5V de Arduino y la GND, posteriormente conectamos los valores horizontal y vertical (o VRx y VRy según fabricante) a la entrada analógica 0 y 1 de nuestro Arduino Mega, hemos usado el pin digital 8 como entrada para el botón central.
Código
/*
Lectura del Joystick analogico para Araduino
*/
int analogInputPinX = 0; // Pin de entrada Analogica del eje X
int analogInputPinY = 1; // Pin de entrada Analogica de la psoocion
int digitalInputPin = 8; // Pin de entrada pulsacion del boton central
int wait = 1000;
long analogInputValX;
long analogInputValY;
int digitalInputVal;
void setup()
{
pinMode(analogInputPinX, INPUT);
pinMode(analogInputPinY, INPUT);
pinMode(digitalInputPin, INPUT);
Serial.begin(9600);
}
void loop()
{
analogInputValX = analogRead(analogInputPinX);
analogInputValY = analogRead(analogInputPinY);
digitalInputVal = digitalRead(digitalInputPin);
Serial.print("Boton central ");
Serial.print(digitalInputVal);
Serial.print(" eje X ");
Serial.print(analogInputValX);
Serial.print(" eje Y ");
Serial.print(analogInputValY);
Serial.println(" ");
delay(wait); // Pausa para retormar el bucle
}
Una vez programado veremos los cambios en el monitor serial.
Vídeo de funcionamiento
Fuente: goodliffe
Entre otras cosas hago proyectos y doy cursos de Arduino.
Comprar JoyPad para Arduino
¿Necesitas comprar un JoyPad para tus proyectos de Arduino? Pincha aquí para ver nuestra selección de productos.