En este post te voy a mostrar cómo usar un joystick en Arduino para leer la dirección del joystick así como para saber si el botón que tiene es presionado o no.
Leeremos los dos ejes, calibraremos la posición del Arduino y sabremos hacia cuál lado está inclinado.
¿Cómo obtener los valores del joystick?
El joystick o palanca tiene dos ejes, el eje x y el eje y. Para saber la dirección de cada uno leemos su valor analógico con digitalRead
.
Cuando el joystick está en su estado normal, el valor está en aproximadamente 500, en cambio, cuando está en su punto límite está en 0 o 1023
.
En resumen, 0 es que está en el límite inferior (por ejemplo izquierda), 500 es que está sin moverse y 1023 es que está en el límite superior (por ejemplo, la derecha).
El botón
Por otro lado el botón es una lectura digital, ya que es un 0 o un 1. En mi caso, cuando el botón está presionado se lee un 0, es decir, está negado.
Circuito
Ahora que hemos visto cómo funciona de manera general vamos a conectar. Necesitamos conectar los ejes a una entrada analógica, normalmente vienen prefijados con la A
, por ejemplo, A0
.
Después, el botón es conectado a una entrada digital. No recomiendo el 0 ni el 1 pues ahí se usa para RX y TX, así que podemos usar el 2
.
Un modelo del circuito para usar el Arduino con el joystick es:

Lectura de valores – Código
Veamos nuestro primer acercamiento. Conectamos y colocamos el siguiente código:
Simplemente estamos depurando los valores. Abre el monitor serial y cuando todo esté normal podría mostrarse algo así:

Como lo dije, los valores normales están cerca de 500. Pero cuando uno de ellos se mueve, o se presiona el botón, la lectura cambia:

Izquierda, derecha, arriba y abajo
Ahora podemos establecer umbrales y calibrar el joystick como deseemos. Podemos hacer unas simples comparaciones para saber si es izquierda, derecha, arriba o abajo.
También podemos saber si el botón está pulsado. El código queda así:
Como ves, son simples comparaciones. En este caso si el valor es mayor que 1000 suponemos que está en determinada dirección (tenemos el umbral de 1000 a 1023) y si es menor que 200 lo mismo.
La salida es:
Aclaración sobre la calibración
En el código expuesto con anterioridad podrás ver que estoy utilizando el eje X para saber si es arriba o abajo, cuando sabemos que según el plano cartesiano, el eje X debería medir izquierda y derecha.
Pues bien, todo esto depende de cómo estará ubicado tu joystick y cómo se le será presentado al usuario.
Te invito a leer más sobre Arduino en mi blog.