¿Qué es un joystick?
Un joystick es una especie de seta que gira 360 grados y que nos permite controlar multitud de aparatos. Se ven en muchos dispositivos sobretodo en mandos de videoconsolas. ¡Son muy útiles para controlar de forma sencilla nuestros robots u otros proyectos! ¿Quieres aprender como funcionan? ¡Vamos allá!
Aunque parezca un componente muy complicado en realidad no lo es…hagamos una cosa, coge tu joystick y quítale la pieza de plástico, la seta, que te permite manipularlo, fíjate bien:
¿No te suenan de algo esos dos componentes negros? ¡Se parecen muchísimo a tu potenciómetro! Y es que, literalmente, un joystick no es más que dos potenciómetros juntos, uno para controlar el eje X, y otro para controlar el eje Y. Además éste joystick tiene también un pulsador, de forma que si pulsas la seta, puedan ocurrir aún más cosas.
¡Dos potenciómetros y un pulsador! ¡Y podemos programarlos como deseemos! ¡Vamos a descubrir cómo!
Para hoy necesitarás:
- Un módulo Joystick
- Una pantalla LCD
- Una placa controladora ZUM BT 328 o compatible con Arduino UNO
- Un cable USB
Ejemplo 1
Mostrar los valores del joystick por pantalla
Vamos a aprovechar la pantalla LCD para mostrar los valores del joystick, tanto del eje X, como del Y de su botón. Para ello conecta el joystick y el LCD de la siguiente forma:
Ahora fíjate bien en cómo se ha realizado el programa en bitbloq:
Como sucedía con otros sensores que hemos visto anteriormente, debemos asignarle al joystick una variable que almacene sus valores. En el ejemplo la hemos llamado joystick y es una variable un poco especial… ¡Almacena tres valores! Este tipo de variables son conocidas como arrays o vectores y sirven para poder almacenar varios valores en una sola variable, cómo las coordenadas x, y, z de una gráfica, las horas minutos y segundos de un reloj, o en nuestro caso, la coordenada X, Y, y el pulsador de nuestro joystick.
Como ves, declaramos y asignamos la variable al joystick y a continuación empezamos a escribir su información en la pantalla LCD. Para acceder a la coordenada X, Y o al valor del pulsador del joystick deberemos acceder a uno de los tres elementos de la variable. Para ello puedes usar el bloque var variable[indice] donde el índice corresponderá al elemento que queremos acceder.
Hay algo muy importante que debes tener en cuenta cuando trabajes con vectores. El primer elemento de un vector no corresponde al índice 1, sino al índice 0. Es decir si quieres acceder al primer elemento de un vector, pondrás un 0 en vez de un 1, si quieres acceder al segundo, un 1 en vez de un 2, etc, en el siguiente esquema lo entenderás mejor:
Fíjate en los valores que alcanza tu joystick, en teoría tu joystick te dará, como con el potenciómetro, valores entre 0 y 1023, pero en la realidad es muy difícil que alcances esos valores, dependerá de tu joystick. Esto se debe a limitaciones físicas del propio joystick. Ten en cuenta los valores máximos que alcanza tu joystick en caso de que desees hacer un proyecto que requiera gran precisión para programar mejor tus proyectos.
Hagamos otro ejemplo con el joystick:
Ejemplo 2
Variar la velocidad de parpadeo de un LED con el joystick
¿Recuerdas como variábamos la velocidad de parpadeo con el potenciómetro? Pues bien en aquella ocasión el tiempo de espera tras el encendido y el parpadeo del LED tenía que ser el mismo… ¡ahora con el joystick tenemos dos potenciómetros en una sola pieza! así que vamos a hacer un pequeño experimento, y hacer que el tiempo que permanezca encendido el LED dependa del valor X y el tiempo que permanezca apagado del valor Y.
Conecta el joystick como en el esquema anterior y añade un led al pin digital número 6. ¡Inténtalo tú mismo! Te recomendamos, para que el efecto sea más evidente, que mapees el valor del joystick entre 0 y 500, aunque no es estrictamente necesario. Cuando quieras ver la solución baja mas abajo.
¿Lo conseguiste? Debería haberte quedado algo similar a esto:
Como puedes observar, los tiempos de parpadeo varían dependiendo de la posición del joystick, experimenta con las distintas posiciones, puedes cambiar tambien los valores de mapeo para que sea más rápido o más lento.
Los joystick pueden usarse para multitud de aplicaciones, desde controlar motores, a cualquier otro elemento u aparato, experimenta con él, pronto será uno de tus componentes favoritos.