Joystick con Arduino: conexión y lectura

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:

Joystick Con Arduino

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í:

Leyendo valores de joystick

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:

Moviendo ejes de Joystick y leyendo con Arduino

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.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario