Introduction: Potenciometro, Botones Y Arduino UNO Como Joystick
Este proyecto convierte nuestro Arduino UNO en un Joystick, que luego, el computador lo leerá como si fuera un control estilo PS3 nativo, Usando el software de código abierto UnoJoy, un potenciometro y un par botones.
Arduino UNO tiene una limitación a la hora de usar algunos códigos como el USBHost (MouseController y KeyboardController) estos solo podrán ser utilizados en otros modelos de Arduino como el Leonardo, ya que este posee el microcontrolador ATmega32u4, el cual se comunica directamente por USB a nuestro computador, en cambio el UNO, usa un segundo microcontrolador llamado ATmega16U2, el cual traduce la información del microcontrolador central ATmega328P de serial a USB común que el computador pueda detectarlo, al hacer esta conversión, imposibilita usar el UNO como Joystick, para controlar nuestro teclado o mouse.
Aquí es donde entra en uso UnoJoy, el cual nos da todos los drivers y materiales necesarios para programar y modificar el UNO en un Joystick nativo.
Step 1: Materiales
Para probar que podemos conectar varios tipos de sensores que no solo sean los botones estándar, usaremos:
- Arduino UNO
- Potenciometro
- 2 sensores táctiles capacitivos o botones
- Jumpers
- Protoboard
Step 2: Descargar Programas Y Archivos
Necesitaremos varios programas para hacer funcionar todo esto, dejare aquí los archivos a descargar.
- Usaremos Processing 2.2.1 con un código ya preestablecido para probar que nuestro código y botones funcionen, antes de pasarlo al modo Joystick.
- Atmel FLIP tool es necesario para que nuestro computador lea el Arduino en modo DFU (Device Firmware Update, mas adelante se explicara como llegar a este estado) y poder instalarle el modo Joystick.
- En UnoJoy.rar están todos los archivos que necesitaremos para pasar de Arduino a Joystick y viceversa.
- Algún emulador o juego que se pueda configurar los botones para probar que nuestro Joystick funcione.
- Evidentemente la IDE de Arduino
Step 3: Instalar Y Organizar Lo Necesario
Una vez descargado todos los archivos, procedemos a instalarlos.
- Empezamos por el Flip Installer - 3.4.7.112, el cual instalara los drivers para leer el Arduino en estado DFU.
- UnoJoy.zip contiene los archivos necesarios para trabajar con UnoJoy, instalaremos UnoJoyDriver.bat para tener el driver del Joystick.
- En la carpeta UnoJoyArduinoCodigo esta el código .ino para trabajar en el Arduino IDE.
- La carpeta UnoJoyProcessingVisualizador esta el .pde que usaremos con la versión de Processing que descargamos anteriormente para probar que todo funcione correctamente.
*En Windows 7 te pedirá autorización para instalar drivers sin firma digital, solo es darle en aceptar, Windows 10 tiene un poco mas enredado la instalación de drivers sin firma digital, al final puede que muchos no te instalen, pero sigue con los pasos a ver si funciono sin necesidad de instalar todos, solo instalara 1 aveces; si no instala ninguno, prueba este metodo.
Step 4: Conectar El Potenciometro Y Los Botones
Ahora procedemos a conectar todo en su orden
- Conectaremos el potenciometro a un lugar del centro de la protoboard, allí sacaremos 3 cables; mirando el potenciometro de frente, el lado izquierdo es 5v, la mitad datos y el lado derecho ground, 5v y ground los conectaremos al los bordes de la protoboard (Si solo tenemos el potenciometro, conectamos 5v y ground directamente al Arduino y omitimos los siguientes pasos), ya que usaremos mas el 5v y el ground para los demás botones; el cable del centro ira directamente al pin analógico 2 del Arduino.
- Conectamos del borde de la protoboard, los 5v y ground al Arduino, para dar la energía a todo ese carril de la protoboard y alimentar los demás sensores.
- Ahora conectaremos los sensores táctiles, o los botones, si es un botón estándar de 2 patas, una seria a ground y la otra es datos, al pin digital 4. En este caso, un botón táctil necesita de 5v y ground, asi que conectamos del sensor táctil, GND a ground, VCC a 5v y SIG a datos pin digital 4.
- Lo mismo con el otro sensor táctil, GND a ground, VCC a 5v y SIG a datos pero en el pin digital 5.
Step 5: Subir El Código Al Arduino
En la carpeta UnoJoyArduinoCodigo esta el código que subiremos al Arduino, ya esta pre configurado con el sistema del UnoJoy y con unos cambios para leer el potenciometro y los botones. Adentro del código se explica la función de cada parte de el.
*Verificamos el código para mirar que todo este bien, si sale un error, por lo general es con la librería Wire.h, aquí la dejo para que la reemplazen, borran la que tengan y copian esta que dejo para descargar, se pone en la dirección C:\Program Files (x86)\Arduino\libraries
**Pueden pasar otros errores menos comunes como librerías duplicadas, en ese caso debemos mirar el mensaje de error y buscar la ubicación de las demás librerías para eliminaras, se debe tratar de tener solo una versión de las librerías y en la dirección principal donde esta instalado el IDE de Arduino.
Cuando todo salga bien, subimos el código al Arduino.
Step 6: Probar El Código Y Las Conexiones
En la carpeta UnoJoyProcessingVisualizador, estará el código de processing que usaremos para probar que todo este bien, iniciamos processing 2.2.1 que descargamos previamente y buscamos UnoJoyProcessingVisualizador.pde, iniciamos el código con el Arduino conectado y veremos como se abrira una ventana con una imagen de un control de PS3, también en el Arduino, los led´s TX y RX estarán en constante parpadeo, enviando y recibiendo información.
*Si por alguna razón el Arduino no es reconocido directamente, en la parte superior izquierda probaremos los puertos COM que hayan hasta dar con nuestro Arduino.
Ahora movemos el potenciometro hacia la derecha o izquierda y veremos como los botones circulo y triangulo serán resaltados en rojo, eso significa que están siendo pulsados y que todo ha salido bien hasta el momento. Probamos también los botones o táctiles, deberán funcionar como botones equis y cuadrado.
Step 7: Pasar Al Estado DFU
El estado DFU en Arduino se usa para actualizar el firmware o el sistema que tengan los microcontroladores del Arduino, en este caso, pondremos nuestro Arduino en DFU para poder flashear (cambiar un sistema por otro) uno de UnoJoy, el que se encargara de que nuestro computador lea el Arduino como un Joystick nativo.
Para esto necesitaremos un Jumper hembra-hembra, o un pedazo de metal conductor (un cable, unas tijeras, un cuchillo...), lo que haremos sera con el Arduino conectado al computador, conectar los dos cables que sobresalen del Arduino y que están cercanos al botón de reset y a la conexión USB (Encerrados en un circulo rojo en la imagen), al unir con una conexión o un puente esos dos, el led L del Arduino parpadeara un par de veces y luego quedara encendido, en este momento nuestro Arduino esta en modo DFU.
Step 8: Cambiar Entre Modos
Esto lo haremos cada vez que queramos cambiar el modo del Arduino, si pasamos de Arduino a Joystick, primero vamos al estado DFU, luego ejecutamos "Cambiar a modo Joystick.bat", esperamos que la consola flashee el Arduino y salga todo en verde "PASS", desconectamos y conectamos de nuevo el Arduino, ahora es un Joystick, el led TX debe estar en constante parpadeo y lo puedes probar en un emulador, organizando los controles o en "Dispositivos e impresoras" en el Panel de control de Windows.
Este modo impide cualquier cambio con el IDE de Arduino, es solo un JoyStick. para hacer cambios al código debemos devolverlo al modo Arduino.
Para volver al modo Arduino, primero vamos al estado DFU, luego ejecutamos "Cambiar a modo Arduino.bat", esperamos a la consola que todo salga en verde, desconectamos y volvemos a conectar el Arduino y ya volveríamos al Arduino programable con los botones o con cualquier otro código como un Arduino normal.
Para no estar todo el tiempo pasando al modo DFU, se usa el programa de processing para probar que todo funcione como se quiere, hay que tener cuidado con el modo DFU ya que por lo general no se toca si no se sabe para que se pone en ese estado.
Step 9: !A Jugar!
Configura el código a tu gusto, usa mas sensores o prueba con todos los botones para crearte un Joystick propio para cualquier juego, fácilmente y barato.
Espero que hayas entendido todo.
:D
Los links originales de los programas y códigos usados: