Interfaz de puerto de juego Arduino

Hace un tiempo me puse mis manos en un viejo PC joystick analógico, y desde entonces he tenido la intención de construir un adaptador que funcione el mando de control a través de USB. El adaptador que  finalmente  construido consta de un Arduino conectado a un puerto de juegos me cortaron una tarjeta de sonido de edad. El Arduino lee el análogo (x e y movimiento) y (botones) entradas digitales y luego los envía al ordenador a través de serie. A continuación, una secuencia de comandos de procesamiento que se ejecuta en el ordenador lee los datos en serie, y la convierte en movimientos del ratón y hace clic en el uso de la clase del robot de Java.



Primero hice un adaptador para romper las conexiones de la palanca de mando. Pirateé un puerto de juegos fuera una vieja tarjeta de sonido, y por cable a tres conjuntos de conexiones a la misma, mediante el pinout que encontré. A pesar de que la palanca de mando en particular tengo no utiliza todos los contactos de venta, que se adelantó un incluidos todos ellos.




En la imagen de abajo, los tres mejores pasadores de cabecera son los 5V y las conexiones a tierra (rojo es de 5V). Los cuatro medias son las conexiones analógicas, y los cuatro abajo son digitales, para los botones.

Lamentablemente no se puede sólo tiene que enchufar estos pasadores directamente en un microcontrolador y conseguir que se vaya leer información útil de la palanca de mando. Desplegables resistencias deben añadirse para cada una de las conexiones de los botones. Además, los potenciómetros en el joystick no tienen sus terceros pasadores conectados a tierra, así que tuve que añadir una resistencia de 100k después de cada uno de los pines analógicos, por lo que los potenciómetros actúan como un divisor de tensión y el Arduino pueden leer de manera adecuada.

En la imagen de abajo, los puentes de color naranja son analógicos, digitales verde, y los dos en la parte inferior son para 5V y tierra:


Tire hacia abajo de resistencias:



Todo lo relacionado (menos la conexión USB al ordenador):


La forma en que funciona el código es bastante simple. El Arduino lee los valores de los potenciómetros y los botones, las escalas de los valores a menos de 255 (1 byte) para que puedan ser enviados a través de serie y, a continuación, envía los valores al ordenador a través de la conexión en serie.  

La secuencia de comandos de procesamiento que se ejecuta en el ordenador lee la secuencia de números que se recibe. Se comparan los valores forman el potenciómetro a los valores cuando se centra la palanca de mando y, a continuación, mueve el ratón usando el comando Robot.mouseMove () basado en la diferencia entre los valores. Al mover el joystick más lejos en una dirección significa que el ratón se moverá más rápido. El botón de disparo corresponde a la izquierda, haga clic y el botón para el pulgar es clic derecho. La palanca de mando secundario (arriba centro) se utiliza para el desplazamiento, y los dos botones restantes Actualmente ajustar la sensibilidad del joystick.

Debido a la velocidad a la que se ejecuta la secuencia de comandos de procesamiento, tenía que limitar la velocidad a la que el Arduino envía datos a través de serie, ya que si los datos se envían con demasiada rapidez, se atrasa y creó un enorme retraso cuando se mueve la palanca de mando. Por lo tanto, la palanca de mando no es tan sensible como yo esperaba que fuera, y se debe mantener pulsado el botón más de lo que haría con un ratón a sus clics para registrarse. Una solución para esto sería usar algo como un Teensy , que puede ser reconocido como un HID, de manera que el microcontrolador podría controlar el ratón directamente, eliminando la necesidad de una secuencia de comandos de interpretación.

Share this:

 
Copyright © CONSTRUCCIÒN. Designed by OddThemes