Arduino Nano - Joystick
Este tutorial te enseña cómo usar un joystick con Arduino Nano. En detalle, aprenderemos:
- Cómo funciona un joystick de dos ejes
- Cómo conectar un joystick al Arduino Nano y programarlo
- Cómo convertir los valores del joystick en valores controlables como coordenadas X e Y, la dirección del motor hacia arriba, abajo, izquierda y derecha...

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del joystick de dos ejes
Es posible que te hayas encontrado con un joystick en varios lugares, como un mando de juego, un mando de juguete o incluso una máquina grande como el panel de control de una excavadora.
El joystick está construido con dos potenciómetros que son perpendiculares entre sí y un pulsador. De este modo, produce las siguientes salidas:
- Un valor analógico que va de 0 a 1023 (leído por Arduino) que corresponde a la posición horizontal (conocida como la coordenada X)
- Un valor analógico que va de 0 a 1023 (leído por Arduino) que corresponde a la posición vertical (conocida como la coordenada Y)
- Un valor digital del pulsador (ya sea HIGH o LOW)
Por lo tanto:
- Dos valores analógicos pueden combinarse para crear coordenadas 2-D.
- El centro del sistema de coordenadas 2-D es la posición de reposo del joystick.
- Para determinar la dirección del joystick, ejecute un código de prueba que mostrará esta información en la próxima sección.
Algunas aplicaciones pueden usar las tres salidas, mientras que otras pueden utilizar solo algunas de ellas.
La asignación de pines del joystick
Un joystick tiene 5 pines:
- Pin GND: Este pin debe conectarse a GND (0V).
- Pin VCC: Este pin debe conectarse a VCC (5V).
- Pin VRX: Este pin emite una salida analógica que corresponde a la posición horizontal (conocida como la coordenada X).
- Pin VRY: Este pin emite una salida analógica que corresponde a la posición vertical (conocida como la coordenada Y).
- Pin SW: Esta es la salida del pulsador dentro del joystick. Normalmente está abierto. Si se utiliza una resistencia de pull-up en este pin, el pin SW estará en ALTO cuando no esté presionado, y BAJO cuando esté presionado.

Cómo funciona
- Cuando mueves la palanca del joystick hacia la izquierda o la derecha, el voltaje en el pin VRX varía de 0 a 5V, siendo 0 en la izquierda y 5V en la derecha, resultando en un valor de lectura en el pin analógico de Arduino de 0 a 1023.
- Cuando mueves la palanca del joystick hacia arriba o hacia abajo, el voltaje en el pin VRY varía de 0 a 5V, siendo 0 en la parte superior y 5V en la inferior, resultando en un valor de lectura en el pin analógico de Arduino de 0 a 1023.
- Cuando mueves la palanca del joystick en cualquier dirección, el voltaje en los pines VRX y VRY cambia en proporción a la proyección de la posición en cada eje.
- Cuando empujas la palanca del joystick de arriba hacia abajo, se cierra el pulsador dentro del joystick. Si usamos una resistencia pull-up en el pin SW, la salida del pin SW cambiará de 5V a 0V, resultando en un valor de lectura en el pin digital de Arduino que cambia de HIGH a LOW.
Diagrama de Cableado

This image is created using Fritzing. Click to enlarge image
Ver La mejor forma de alimentar Arduino Nano y otros componentes.
Cómo programar para un joystick
El joystick está compuesto por dos componentes: analógico (ejes X, Y) y digital (botón pulsador):
- Para las partes analógicas (ejes X e Y), simplemente lea el valor del pin de entrada analógica utilizando la función analogRead().
- Para la parte digital (pulsador): es un botón. La forma más simple y conveniente de usarlo es con la biblioteca ezButton. Esta biblioteca incluye soporte para anti-rebote de los botones, así como una resistencia pull-up interna. Para aprender más sobre los botones, puedes consultar el Arduino Nano - Tutorial de Botón. El código para esto se presentará en la siguiente sesión de este tutorial.
Después de obtener los valores de los pines analógicos, es posible que necesitemos convertirlos en valores que se puedan controlar. La siguiente sección proporcionará códigos de ejemplo para ello.
Código de Arduino Nano
Esta sección mostrará códigos de ejemplo para Arduino Nano, como se detallan a continuación:
- Ejemplo de código: leer valores analógicos del joystick
- Ejemplo de código: leer valores analógicos y el estado de los botones del joystick
- Ejemplo de código: convertir valores analógicos en los comandos MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Ejemplo de código: convertir valores analógicos a ángulos para gestionar dos servomotores (p. ej., en una cámara de paneo e inclinación)
Lee valores analógicos del joystick
Pasos R\u00e1pidos
- Copia el código y ábrelo en el IDE de Arduino.
- Haz clic en el botón Subir para transferir el código al Arduino Nano.
- Empuja la palanca del joystick hasta el tope y gírala en un movimiento circular (sentido horario o antihorario).
- Consulta el resultado en el Monitor Serial.
Mientras giras el stick analógico, mantén un ojo en el Monitor serie.
Si el valor de X es 0, toma la posición actual como izquierda y la opuesta como derecha.
Si el valor de Y es 0, anote o recuerde la posición actual como arriba, siendo su opuesto abajo.
Lee valores analógicos y lee el estado del botón de un joystick
Pasos R\u00e1pidos
- Haz clic en el icono de Bibliotecas en la barra izquierda del IDE de Arduino.
- Busca “ezButton” y localiza la biblioteca de botones de ArduinoGetStarted.com.
- Luego, haz clic en el botón Instalar para instalar la biblioteca ezButton.

- Copia el código y ábrelo con el IDE de Arduino.
- Haz clic en el botón Subir para enviarlo al Arduino Nano.
- Mueve el pulgar del joystick en las direcciones izquierda, derecha, arriba y abajo.
- Empuja el pulgar del joystick desde la parte superior.
- Consulta el resultado en el Monitor Serial.
Convierte el valor analógico en comandos MOVER IZQUIERDA/DERECHA/ARRIBA/ABAJO
Pasos R\u00e1pidos
- Copie el código y ábralo con el IDE de Arduino.
- Haga clic en el botón Subir en el IDE para enviar el código al Arduino Nano.
- Mueva el joystick en cualquier dirección con su pulgar.
- Verifique los resultados en el Monitor Serial.
※ Nota:
En cualquier momento dado, podría no haber ningún comando, un comando o dos comandos (p. ej. ARRIBA y IZQUIERDA simultáneamente).
Convierte valores analógicos en ángulos para controlar dos servomotores
Los detalles se pueden encontrar en el tutorial titulado Arduino Nano - Joystick controls Servo Motor.
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.