Arduino UNO R4 - Joystick
En esta guía, aprenderemos a usar un joystick con Arduino UNO R4. Cubriremos:
- Cómo funciona un joystick
- Cómo conectar un joystick al Arduino UNO R4
- Cómo programar el Arduino UNO R4 para leer valores de un joystick
- Cómo convertir los valores leídos del joystick en valores útiles (por ejemplo, coordenadas XY o direcciones para un motor)

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca de Joystick
Es posible que hayas visto un joystick utilizado como mando de videojuegos, un mando de juguete, o incluso en máquinas grandes como los controladores de excavadoras.
El joystick tiene dos potenciómetros dispuestos en una formación cuadrada y un pulsador. Proporciona las siguientes salidas:
- Un valor analógico (de 0 a 1023) para la posición horizontal (coordenada X)
- Un valor analógico (de 0 a 1023) para la posición vertical (coordenada Y)
- Un estado digital de un botón (HIGH o LOW)
Cuando combinas dos valores analógicos, forman coordenadas 2D. Estas coordenadas están centradas cuando el joystick no se está moviendo. Puedes averiguar fácilmente la dirección real de estas coordenadas ejecutando un código de prueba, lo que veremos en la próxima sección.
Algunas aplicaciones podrían usar las tres salidas, mientras que otras podrían usar solo algunas de ellas.
Disposición de pines
Un joystick tiene cinco pines.
- Pin GND: conéctalo a GND (0V)
- Pin VCC: conéctalo a VCC (5V)
- Pin VRX: proporciona un valor analógico para la posición horizontal (coordenada X).
- Pin VRY: proporciona un valor analógico para la posición vertical (coordenada Y).
- Pin SW: proviene del pulsador del joystick. Por lo general está abierto. Usar una resistencia de pull-up hace que este pin esté en ALTO cuando no está presionado y BAJO cuando está presionado.

Cómo funciona
- Movimiento Izquierda/Derecha
- Cuando mueves el joystick hacia la izquierda o hacia la derecha, cambia la señal eléctrica (voltaje) en el pin VRX.
- Al moverlo a la izquierda, el voltaje cae a 0 voltios.
- Al moverlo a la derecha, el voltaje aumenta a 5 voltios.
- El Arduino lee este voltaje y lo convierte en un número entre 0 y 1023. Así, 0 V corresponde a 0 y 5 V a 1023.
- Movimiento Arriba/Abajo:
- Del mismo modo, mover el joystick hacia arriba o hacia abajo cambia el voltaje en el pin VRY.
- Al subir, el voltaje se reduce a 0 voltios.
- Al bajar, el voltaje aumenta a 5 voltios.
- El Arduino también lee este voltaje, convirtiéndolo en un número entre 0 y 1023, igual que con el pin VRX.
- Movimientos combinados:
- Cuando mueves el joystick en cualquier dirección (no solo izquierda/derecha o arriba/abajo), cambia el voltaje en los pines VRX y VRY según su posición en cada eje.
- Presionar el Joystick:
- Cuando empujas el joystick hacia abajo (como pulsando un botón), activa un botón interno dentro del joystick.
- Si conectas una resistencia pull-up al pin SW, el voltaje en este pin cambiará de 5 V a 0 V cuando se pulse.
- El Arduino lee este cambio como una señal digital, mostrando ALTO (5 V) cuando no está presionado y BAJO (0 V) cuando está presionado.
En resumen, al mover el joystick cambian los voltajes en VRX y VRY, que el Arduino lee como números entre 0 y 1023. Al presionar el joystick cambia el voltaje en el pin SW, que el Arduino lee como HIGH o LOW.
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Ver La mejor forma de alimentar Arduino Uno R4 y otros componentes.
Cómo programar para un joystick
El joystick consta de dos componentes: una parte analógica (ejes X e Y) y una parte digital (un pulsador).
- Para leer los valores de los ejes X y Y, simplemente use la función analogRead() en el pin de entrada analógica.
- Para la parte digital, que es un pulsador: es simplemente un botón. Un método fácil y eficaz es usar la biblioteca ezButton. Esta biblioteca ayuda a gestionar la estabilidad del botón y también activa un sistema interno para mantener estable el botón. Puedes aprender más en el tutorial de Arduino UNO R4 - Botón. Te mostraremos cómo usar el código en la siguiente parte de este tutorial.
Después de obtener las lecturas de los pines analógicos, podríamos necesitar convertirlas a valores manejables. La sección siguiente proporcionará ejemplos de código para ello.
Código de Arduino UNO R4
Aquí están los códigos de ejemplo para Arduino UNO R4:
- Ejemplo de código: obtiene valores analógicos del joystick
- Ejemplo de código: obtiene valores analógicos y verifica el estado de los botones del joystick
- Ejemplo de código: convierte el valor analógico en comandos: MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Ejemplo de código: convierte valores analógicos en ángulos para controlar dos servomotores (como en una cámara pan-tilt)
Lee valores analógicos del joystick
Pasos R\u00e1pidos
Siga estas instrucciones paso a paso:
- Si es la primera vez que usa el Arduino Uno R4 WiFi/Minima, consulte el tutorial sobre la configuración del entorno para Arduino Uno R4 WiFi/Minima en el IDE de Arduino (configuración del entorno para Arduino Uno R4 WiFi/Minima en el IDE de Arduino).
- Conecte el joystick al Arduino UNO R4 según el diagrama proporcionado.
- Conecte la placa Arduino Uno R4 a su ordenador utilizando un cable USB.
- Inicie el IDE de Arduino en su ordenador.
- Seleccione la placa adecuada de Arduino Uno R4 (p. ej., Arduino Uno R4 WiFi) y el puerto COM.
- Copie el código anterior y ábralo en el IDE de Arduino.
- Haga clic en el botón Subir en el IDE de Arduino para cargar el código en su Arduino UNO R4.
- Empuje la palanca del joystick hasta el borde y luego gírela en un círculo (ya sea en sentido horario o antihorario).
- Verifique los resultados en el Monitor Serial.
- Al girar el joystick, mantén un ojo en el Monitor Serial. Si el valor de X muestra 0, recuerda esta posición como izquierda; lo opuesto es derecha. Si el valor de Y es 0, toma esta posición como arriba; lo opuesto es abajo.
Lee valores analógicos y lee el estado del botón de un joystick
Pasos R\u00e1pidos
- Ve al icono de Bibliotecas en el lado izquierdo del IDE de Arduino.
- Busca “ezButton” y localiza la biblioteca de botones de ArduinoGetStarted.com
- Haz clic en el botón Instalar para añadir la biblioteca ezButton.

- Copia el código y ábrelo en el IDE de Arduino.
- Haz clic en el botón Cargar en el IDE de Arduino para cargar el código al Arduino UNO R4.
- Mueve el pulgar del joystick a la izquierda, a la derecha, hacia arriba o hacia abajo.
- Presiona hacia abajo en la parte superior del joystick.
- Ver los resultados en el Monitor de serie.
Convierte el valor analógico en comandos de MOVER IZQUIERDA/DERECHA/ARRIBA/ABAJO
Pasos R\u00e1pidos
- Copia el código anterior y ábrelo con el IDE de Arduino.
- Haz clic en el botón Subir en el IDE de Arduino para cargar el código en Arduino UNO R4.
- Mueve el pulgar del joystick hacia la izquierda, derecha, arriba, abajo o en cualquier otra dirección.
- Verifica los resultados en el Monitor Serial.
※ Nota:
A veces, puede no haber ninguna orden, una orden o dos órdenes al mismo tiempo (por ejemplo, ARRIBA y IZQUIERDA juntos).
Convierte valores analógicos en ángulos para controlar dos servomotores
Puede encontrar información sobre el tutorial Arduino UNO R4 - Controles de Joystick para servomotor.
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.