Joystick con Arduino. Varios ejemplos

En este proyecto, aprenderemos el principio de funcionamiento de un joystick, y cómo lo podemos aplicar a nuestros proyectos con Arduino.

Un joystick es un dispositivo que podemos encontrar en muchas máquinas, videojuegos, computadores e incluso trasbordadores espaciales, muy seguramente hemos visto y utilizado algún joystick al jugar PlayStation o Xbox.


Los hay de dos tipos: Digitales, los cuales poseen en su interior una cruceta con cuatro botones, cuyos estados solo pueden ser presionado/liberado. El otro tipo de joystick es el análogo, el cual es el más común ya que son más precisos que los digitales. En su interior cuentan con un potenciómetro para cada eje, por lo que envían una señal eléctrica de acuerdo a la posición en que se encuentre. En este proyecto utilizaremos un joystick de tipo análogo de dos ejes y que adicionalmente consta de un pulsador.


Materiales:
  • Joystick análogo
  • 10 LEDs
  • 10 resistencias de 220 ohms
  • 1 servomotor 
  • Cables
  • Protoboard
  • Tarjeta Arduino
La conexión con el Arduino es bastante sencilla, podemos ver que nuestro joystick consta de 5 pines:
  • GND que se conecta al GND del Arduino
  • VCC que se conecta a los 5V del Arduino
  • Vx, que se conecta a un pin análogo del Arduino. Con este pin leemos la posición en el eje X
  • Vy, que se conecta a un pin análogo del Arduino. Con este pin leemos la posición en el eje Y
  • SW, es el botón correspondiente al pulador del joystick. Va a algún pin digital del Arduino
Con respecto al pulsador, debemos conectarlo a través de una resistencia PULL-UP como lo vimos en este post para que así pueda funcionar correctamente. Pero en este caso no utilizaremos resistencias adicionales, sino que activaremos la resietencia PULL-UP interna que posee el Arduino y se hace por medio del código.

Nuestro primer ejemplo va a ser la prueba del joystick. Creamos un sencillo programa para leer los valores en X, en Y y el estado del pulsador, para mostrarlos a través del monitor serie.
El esquemático queda de la siguiente manera:


Quedaría funcionando de la siguiente manera:



El código de este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=14-o6AbPacfbtRP7kzy2cjCXNG1J2QbZf

Con nuestro segundo ejemplo, buscaremos controlar unos LEDs de acuerdo a cómo movemos el joystick. Si se mueve el joystick a la derecha, se ejecuta una secuencia hacia esa dirección y lo mismo sucede si se mueve el joystick hacia la izquierda. Cuando se presiona el pulsador, se encienden todos los LEDs al tiempo. El esquemático es el mismo del anterior, pero adicionamos 10 LEDs conectados desde el pin 2 hasta el 11


El código de este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1uOFuZUZ6v2c5U-rt9X9wFEutlnlpdIZ-

Su funcionamiento se ve de la siguiente manera:


Nuestro último ejemplo consiste en controlar el movimiento de un servomotor. Inicialmente la posición de este será de 90 grados, y cambiará conforme movamos el joystick a la izquierda o derecha. Si se presiona el pulsador, el servo vuelve a su posición inicial. El esquemático queda de la siguiente manera:


Su funcionamiento se ve así:


El código de este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=1Tn5TuuPnI5fw_QRIQCnRfk4gpR4F55ZO

Comentarios

  1. Eres un genio Muchisimas gracias por haber hecho este programa me has salvado un TFG

    ResponderBorrar
  2. Cómo puedo hacer para que mi servo no tenga límite de grados en la vuelta ?ya intente de muchas formas y no me sale, me pueden ayudar por favor

    ResponderBorrar
    Respuestas
    1. el servo tiene una cantidad limitada de grados si quieres que de vueltas indefinidamente usa un motor

      Borrar

Publicar un comentario