Cómo controlar robots con un controlador de juego y Arduino

  • Brian Curtis
  • 0
  • 5068
  • 827
Anuncio

Arduinos y tableros similares compatibles son uno de los dispositivos preferidos para los aficionados al bricolaje en todas partes. Ya sea que sea un principiante que acaba de comenzar con Arduino o alguien que ya los ha estado utilizando en su vida, proporcionan una plataforma para innumerables proyectos increíbles..

Hoy exploraremos una forma creativa de controlar un servo usando Processing y un controlador Xbox360. Si ya eres un experto en el desarrollo de juegos, es posible que te interese nuestro tutorial de Controlador de juegos personalizado, que utiliza Unity.

Este tutorial asumirá un poco de conocimiento previo, si esta es su primera incursión en el violín de Arduino, puede encontrar nuestra guía Arduino útil aquí. Del mismo modo, si esta es la primera vez que usa Java, puede ser un poco confuso. Si bien Processing utiliza una versión simplificada de la plataforma, estos conceptos y consejos de Java aún podrían ayudar.

Que necesitas

  • 1 x Arduino Estamos usando una ONU hoy.
  • 1 x servo de hobby. Cualquier cosa que funcione con los pines Arduino.
  • 1 x controlador Xbox360 con cable. Aunque esto técnicamente funcionará con casi cualquier controlador.
  • Varios cables de conexión.

Además de estas cosas, también deberá descargar Processing y Arduino IDE de sus respectivos sitios web..

Preparando el Arduino

Primero necesitamos adjuntar nuestro servo. Los colores del cableado pueden variar aquí, pero como regla general rojo se une a la 5v pin y marrón o negro adjuntar a la GND alfiler. La línea de datos, que generalmente es amarillo o naranja, se adhiere a pin 10.

Verifique su cableado y conecte el Arduino a la computadora. Abre el IDE de Arduino.

Abra el boceto StandardFirmata ubicado en Archivo> Ejemplos> Firmata> StandardFirmata. Este boceto configura la placa para el control externo sobre el puerto serie, y es el mismo que utilizamos en nuestro artículo sobre el control de Arduino con Python Cómo programar y controlar un Arduino con Python Cómo programar y controlar un Arduino con Python Lamentablemente, Es imposible programar directamente un Arduino en Python, pero puede controlarlo a través de USB utilizando un programa Python. Así es cómo. . Sube el boceto al tablero.

Si la carga falla, verifique que haya seleccionado la placa correcta y los detalles del puerto en Herramientas menú.

Nuestro Arduino está listo para partir.!

Configurar procesamiento

Procesamiento abierto, serás recibido con un boceto en blanco. Antes de hacer algo aquí, necesitaremos instalar algunas bibliotecas. Dirígete a la Bosquejo menú y seleccione Importar biblioteca> Agregar biblioteca. Esto traerá el Gerente de contribuciones que será familiar para cualquier usuario de Arduino.

Necesitamos instalar tres bibliotecas para que esto funcione. Primero está el Game Control Plus biblioteca. Esto es lo que nos permitirá usar nuestro controlador de juego con Processing. Use la ventana de búsqueda para encontrarlo y haga clic en instalar en la esquina inferior derecha. Game Control Plus necesita otra biblioteca instalada para su herramienta de configuración, así que consigámosla ahora. Busque el G4P biblioteca e instalarlo también.

Finalmente, necesitamos el Arduino (firmata) biblioteca. Lo has adivinado, búscalo y haz clic en instalar. Con estas cosas instaladas, estamos listos para continuar con las pruebas de que todo funcionará. Hoy estamos trabajando con Windows 10, pero el procesamiento está disponible para la mayoría de las plataformas, incluida Raspberry Pi. Imagina las posibilidades!

Probar el Arduino

Antes de sumergirnos en la creación de un boceto personalizado, probemos el Arduino y el Servo con Procesamiento. Abierto Archivo> Ejemplos, y seleccione ArduinoServo desde el Bibliotecas contribuidas / Arduino (firmata) carpeta. Usaremos esto para probar nuestro servo, pero primero puede que tengamos que cambiar un par de cosas.

Desplácese hacia abajo por el boceto y encuentre esta línea:

println (Arduino.list ());

Si está comentado, elimine las dos barras antes println (Arduino.list ());, y guarda el boceto. Ejecútelo haciendo clic en el icono de reproducción y vigile la consola en la parte inferior. Esto enumerará todo lo adjunto a su COM puertos.

En mi caso, mi Arduino estaba en COM 8, que era el tercer puerto enumerado aquí. Esto es importante ya que el código en la línea a continuación tiene un Formación cuyo valor determina qué puerto COM usar.

Necesitamos cambiar esto para reflejar nuestro puerto COM. Para mí, era la tercera posición, o índice número 2:

arduino = nuevo Arduino (este, Arduino.list () [2], 57600);

Necesitamos hacer algunos otros pequeños cambios a este código para probarlo. Desplácese hacia abajo hasta donde están configurados los pines Arduino y comente una de las líneas aquí. Cambia el otro a Pin 10.

//arduino.pinMode(4, Arduino.SERVO); arduino.pinMode (10, Arduino.SERVO);

Necesitamos hacer lo mismo en el Dibujar() método:

arduino.servoWrite (10, constreñir (mouseX / 2, 0, 180)); // arduino.servoWrite (4, constreñir (180 - mouseX / 2, 0, 180)); 

Guarde el boceto y ejecútelo. Debería poder mover su servo moviendo el mouse de un lado a otro por la ventana que genera el programa.

Si no funciona para usted, verifique el cableado de su servo y verifique que tenga la posición de matriz correcta para su puerto COM. Una vez que sepa que Arduino está hablando bien con Processing, es hora de seguir adelante.

Configurar el controlador

La biblioteca Game Control Plus que estamos usando también viene con una configuración poderosa. Asegúrese de que su controlador esté enchufado, abra el Configurador proyecto de ejemplo y ejecútelo. Obtendrá un menú como este:

Haga clic en el nombre de su controlador y aparecerá una ventana de configuración mucho más grande.

Esto puede parecer bastante desalentador, pero está diseñado para ser lo más simple posible. En el lado izquierdo, complete la primera clave con el nombre que desea como variable. Esta variable controlará la posición del servo, así que lo llamaré servoPos.

En el cuadro al lado puedes dar una breve descripción de lo que hace. Ahora tome su controlador y mueva la palanca que desea usar con su servo. Un poco de experimentación muestra que el joystick derecho corresponde con el cuadro Rotación X. Arrastre una línea entre servoPos variable, y este cuadro.

Ahora necesitamos guardar nuestra configuración como un archivo de datos. En la esquina superior derecha de la ventana, complete el Rol del dispositivo campo y el Nombre del archivo campo.

El nombre de archivo es importante, ya que lo usará en su código. Lo mantengo simple llamándolo xbs. Hacer clic Verificar entonces Salvar. Esto escribe un archivo con instrucciones para nuestro controlador que podemos usar más adelante.

Preparación de la carpeta de croquis personalizada

Configuremos nuestra carpeta de trabajo. Abra un boceto de procesamiento en blanco y guárdelo con el nombre que desee. Esto creará un directorio para él en la ubicación de guardado.

Ahora navegue a Documentos / Procesamiento / bibliotecas / GameControlPlus / ejemplos / Configurador y copie la carpeta etiquetada datos. Esta carpeta contiene el archivo de configuración que acabamos de crear. Navegue al directorio de su boceto en blanco recién guardado y pegue la carpeta de datos.

Crear el boceto personalizado

Ahora todo está en su lugar y podemos comenzar a hacer un boceto usando nuestras dos bibliotecas. Revisaremos esto paso a paso, pero puede descargar el boceto completo y la carpeta de datos si desea avanzar. Tenga en cuenta que aún puede necesitar modificar el código para reflejar sus puertos COM Arduino.

Comience importando todas las bibliotecas que necesitaremos:

procesamiento de importación. serial. *; import net.java.games.input. *; import org.gamecontrolplus. *; import org.gamecontrolplus.gui. *; import cc.arduino. *; import org.firmata. *;

También necesitamos declarar nuestro Dispositivo de control, I / O, y Arduino, junto con un flotador para mantener los valores de nuestro thumbstick:

ControlDevice cont; ControlIO control; Arduino Arduino; pulgar flotante;

Nuestro preparar() El método crea una pequeña ventana, una instancia del controlador, y hace coincidir el dispositivo con nuestro archivo de configuración. Aquí es donde es importante obtener el nombre de archivo correcto de nuestro archivo de datos de configuración:

configuración nula () tamaño (360, 200); control = ControlIO.getInstance (esto); cont = control.getMatchedDevice ("xbs"); if (cont == null) println ("no es hoy chump"); // escribe mejores declaraciones de salida que yo System.exit (-1);  // println (Arduino.list ()); arduino = nuevo Arduino (este, Arduino.list () [2], 57600); arduino.pinMode (10, Arduino.SERVO); 

También verificamos si no hay un controlador aplicable en esta etapa, y salimos del programa si es necesario. Mientras que la ventana creada con tamaño() no es necesario, nos dará algunos comentarios más adelante sobre si estamos obteniendo valores útiles de nuestro controlador. También inicializamos nuestro Arduino y pin aquí como lo hicimos durante las pruebas.

Ahora creamos un pequeño método para tomar el valor de entrada de nuestro controlador y asignarlo a valores que nuestro servo podrá usar:

public void getUserInput () thumb = map (cont.getSlider ("servoPos"). getValue (), -1, 1, 0, 180); 

Esta línea de código utiliza nuestro archivo de datos para obtener nuestro control con nombre servoPos, que está vinculado al joystick derecho del controlador y lee valores de él. Luego mapea los valores y almacena el valor en nuestro pulgar variable flotante.

En este momento este código nunca se llama, lo arreglaremos ahora.

void draw () getUserInput (); fondo (pulgar, 100,255); arduino.servoWrite (10, (int) pulgar); 

los dibujar() es similar a la lazo() método en el IDE de Arduino. Cada cuadro, llama al getUserInput () método y actualiza el pulgar valor. Utiliza este valor para cambiar el valor rojo del fondo() dándonos un indicador visual del cambio de valor. Luego escribe este valor en el servo usando el arduino.servoWrite () función. Tenga en cuenta que tenemos que lanzar pulgar como un valor entero ya que la función servoWrite toma dos enteros (número de pin y ángulo) como argumentos.

Verifique su código en busca de errores, guárdelo y haga clic en Ejecutar. Después de un ligero retraso para inicializar el Arduino, debería verse así:

Control con Game Controller y Arduino: terminado!

Este proyecto fue en muchos sentidos bastante profundo para el programador sin experiencia Aprenda con proyectos de codificación: 9 cursos de Udemy para el programador principiante Aprenda con proyectos de codificación: 9 cursos de Udemy para el programador principiante La verdadera dificultad es encontrar buenos tutoriales y cursos de programación que no solo enseñarle las habilidades necesarias, pero hágalo con proyectos prácticos. Ahí es donde interviene Udemy, a pesar de las fantásticas bibliotecas disponibles para ayudarnos. Lo que representa es una nueva forma de pensar sobre el control de robots y cualquier otro dispositivo que construyas.

¡Este proyecto coincidiría perfectamente con nuestra guía sobre la construcción de un Laser Peret Pew Pew! ¡Cómo construir una torreta láser con un banco Arduino Pew Pew! Cómo construir una torreta láser con un Arduino ¿Estás aburrido? También podría construir una torreta láser. , dándote control total sobre él. Puede configurar un zumbador piezoeléctrico como en nuestra alarma Arduino simple Cómo hacer un sistema de alarma Arduino simple Cómo hacer un sistema de alarma Arduino simple Detecte el movimiento, luego asuste al intruso con un sonido de alarma agudo y luces intermitentes. ¿Suena divertido? Claro que lo hace. Ese es el objetivo del proyecto Arduino de hoy, adecuado ... tutorial y use su controlador para cambiar el tono del timbre o el color de las luces.

O podrías, bueno, construir un robot masivo y conquistar la tierra. Mientras tengas un cable USB lo suficientemente largo!




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.