Cómo controlar robots con un controlador de juego y Arduino
Arduinos y tableros compatibles similares son uno de los dispositivos para dispositivos de bricolaje de todo el mundo. Si usted es un principiante que acaba de comenzar con Arduino o alguien que ya los ha puesto en práctica en su vida, ellos proporcionan una plataforma para innumerables proyectos asombrosos..
Hoy exploraremos una forma creativa de controlar un servo utilizando Processing y un controlador Xbox360. Si ya eres un experto en el desarrollo de juegos, te puede interesar 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 de Arduino útil aquí. Del mismo modo, si esta es la primera vez que usa Java, puede ser un poco confuso. Mientras que Processing utiliza una versión simplificada de la plataforma, estos conceptos y sugerencias de Java pueden seguir siendo útiles.
Que necesitas
- 1 x Arduino. Estamos usando un UNO hoy.
- 1 x hobby servo. Cualquier cosa que funcione con los pines de Arduino..
- 1 x controlador de Xbox360 cableado. Aunque esto funcionará técnicamente con casi cualquier controlador..
- Varios cables de conexión.
Además de estas cosas, también deberá descargar Processing y el IDE de Arduino desde sus respectivos sitios web..
Preparando el arduino
Primero tenemos que adjuntar nuestro servo. Los colores del cableado pueden variar aquí, pero como regla general rojo se adhiere a la 5v pin, y marrón o negro adjuntar a la GND alfiler. La línea de datos, que suele ser amarillo o naranja, se adhiere a pin 10.
Revise su cableado y conecte el Arduino a la computadora. Abre el IDE de Arduino.
Abra el bosquejo de StandardFirmata ubicado en Archivo> Ejemplos> Firmata> EstándarFirmata. Este boceto configura la placa para el control externo sobre el puerto serie, y es el mismo que usamos en nuestro artículo sobre cómo controlar 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 por USB usando un programa Python. Así es cómo. Lee mas . Sube el boceto al tablero..
Si la carga falla, verifique que haya seleccionado la placa y los detalles de puerto correctos en la Herramientas menú.
Nuestro Arduino está listo para ir!
Configuración de procesamiento
Abra el procesamiento, será 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á la Gerente de Contribución lo que resultará familiar para cualquier usuario de Arduino por ahí.
Necesitamos instalar tres bibliotecas para que esto funcione. Primero es el Game Control Plus biblioteca. Esto es lo que nos permitirá utilizar 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 consíguela ahora. Buscar 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á. Estamos trabajando con Windows 10 hoy, pero el procesamiento está disponible para la mayoría de las plataformas, incluida Raspberry Pi. Imagina las posibilidades!
Probando 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 debemos cambiar un par de cosas.
Desplácese hacia abajo a través del boceto y encuentre esta línea:
println (Arduino.list ());
Si está comentado, elimine las dos barras antes println (Arduino.list ());, y guarda el croquis. Ejecútelo haciendo clic en el ícono de reproducción y vigile la consola en la parte inferior. Esto listará todo lo adjunto a su COM puertos.
En mi caso, mi Arduino estaba en COM 8, que era el tercer puerto que figura aquí. Esto es importante ya que el código en la línea de abajo tiene una Formación cuyo valor determina qué puerto COM usar.
Necesitamos cambiar esto para reflejar nuestro puerto COM. Para mí, fue la tercera posición, o el índice número 2:
arduino = nuevo Arduino (este, Arduino.list () [2], 57600);
Necesitamos hacer un par de otros pequeños cambios en 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 por Pin 10.
//arduino.pinMode(4, Arduino.SERVO); arduino.pinMode (10, Arduino.SERVO);
Necesitamos hacer lo mismo en el Dibujar() método:
arduino.servoWrite (10, restricción (mouseX / 2, 0, 180)); // arduino.servoWrite (4, restricción (180 - mouseX / 2, 0, 180));
Guarda el croquis y ejecútalo. Debería poder mover su servo moviendo el mouse hacia adelante y hacia atrás a través de la ventana que genera el programa..
Si no funciona para usted, verifique el cableado de su Servo y verifique que tenga la posición correcta del arreglo para su puerto COM. Una vez que sepa que Arduino está hablando muy bien con Processing, es hora de seguir adelante..
Configurando el controlador
La biblioteca de 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 ejecutarlo. 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 la llamaré servoPos.
En el recuadro de al lado, puedes dar una breve descripción de lo que hace. Ahora levante su control y mueva la palanca que desea usar con su servo. Un poco de experimentación muestra que la barra de control derecha corresponde con el cuadro de rotación X. Arrastre una línea entre servoPos variable, y esta caja.
Ahora tenemos que guardar nuestra configuración como un archivo de datos. En la parte superior derecha de la ventana, complete la Rol del dispositivo campo y el Nombre del archivo campo.
El nombre del archivo es importante, ya que lo usarás en tu 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
Vamos a configurar 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 navega a Documentos / Procesamiento / bibliotecas / GameControlPlus / examples / Configurator y copiar 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.
Creando el boceto personalizado
Ahora todo está en su lugar y podemos comenzar a hacer un boceto utilizando nuestras dos bibliotecas. Pasaremos por este paso a paso, pero puede descargar el bosquejo completo y la carpeta de datos si desea avanzar. Tenga en cuenta que es posible que aún necesite modificar el código para reflejar los puertos COM de Arduino..
Comience importando todas las bibliotecas que necesitaremos:
importación processing.serial. *; import net.java.games.input. *; import org.gamecontrolplus. *; importar org.gamecontrolplus.gui. *; importar cc.arduino. *; importar org.firmata. *;
También tenemos que declarar nuestra Dispositivo de control, I / O, y Arduino, junto con un flotador para mantener los valores de nuestro pulgar:
ControlDevice cont; Control ControlIO; Arduino Arduino; pulgar flotador
Nuestro preparar() El método crea una pequeña ventana, una instancia del controlador, y combina el dispositivo con nuestro archivo de configuración. Aquí es donde es importante obtener el nombre de archivo de nuestro archivo de datos de configuración correcto:
configuración de vacío () tamaño (360, 200); control = ControlIO.getInstance (esto); cont = control.getMatchedDevice ("xbs"); if (cont == null) println ("not today chump"); // escribir 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á más información sobre si estamos obteniendo valores útiles de nuestro controlador. También iniciamos nuestro Arduino y pin aquí como lo hicimos durante la prueba.
Ahora creamos un pequeño método para tomar el valor de entrada de nuestro controlador y asignarlo a los valores que nuestro servo podrá usar:
public void getUserInput () thumb = map (cont.getSlider ("servoPos"). getValue (), -1, 1, 0, 180);
Esta única línea de código usa nuestro archivo de datos para obtener nuestro control nombrado servoPos, que está vinculado a la barra de control derecha del controlador, y lee los valores de este. Luego mapea los valores y almacena el valor en nuestra pulgar variable flotante.
Ahora mismo 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 emitir pulgar como un valor entero como la función servoWrite toma dos enteros (número de pin y ángulo) como sus 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 aspectos bastante profundo para el programador inexperto. Aprende con proyectos de codificación: 9 Cursos de Udemy para programadores principiantes Aprende con proyectos de codificación: 9 Cursos de Udemy para programadores principiantes La verdadera dificultad es encontrar buenos tutoriales de programación y cursos que no solo Enseñarles las habilidades necesarias, pero hacerlo con proyectos prácticos. Ahí es donde Udemy interviene. Lea más, 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 estaría de acuerdo con nuestra guía sobre la construcción de un banco de torreta láser! ¡Cómo construir una torreta láser con un banco Arduino Pew! Cómo construir una torreta láser con un Arduino ¿Estás aburrido? También podría construir una torreta láser. Leer más, que le da un control total sobre él. Puede configurar un timbre piezoeléctrico como en nuestro Simple Arduino Alarm Cómo hacer un sistema de alarma Arduino simple Cómo hacer un sistema de alarma Arduino simple Detectar el movimiento, luego asustar a un intruso con sonidos de alarma agudos y luces intermitentes. ¿Suena divertido? Claro que lo hace. Ese es el objetivo del proyecto Arduino de hoy, adecuado ... Lee más tutorial y usa tu controlador para cambiar el tono del timbre o el color de las luces.
O podrías, bueno, construir un robot masivo y apoderarse de la tierra. Mientras tengas un cable USB lo suficientemente largo!
Explorar más sobre: Arduino, controlador de juegos, robótica.