- Requisitos de software y hardware:
- Concepto detrás:
- Diagrama de circuito:
- Programa Arduino:
- Trabajando:
Todo comenzó con un pequeño juego de la Edad Media llamado "Mario", desde el momento de ser un pequeño hombrecito saltando sobre patos para salvar a mi princesa hasta ser un apuesto príncipe masculino vagando por Persia (Príncipe de Persia) luchando contra la oscuridad. para salvar mi mundo atrás, he sido un gran fanático de los videojuegos y crecí jugando a ellos. Pero a veces se aburren y yo me siento menos involucrado en eso. Hoy en día, las consolas de juegos avanzadas permiten juegos virtuales y nos ayudan a sentir el juego mucho mejor de lo que pueden hacerlo un teclado o un mouse.
Siendo un entusiasta de Arduino, me cansé de jugar el famoso juego llamado "Angry Birds" usando el teclado y el mouse y decidí construir mi propio controlador de juego usando un sensor flexible y un potenciómetro. Cuando se tira del sensor flexible, también se tira del pájaro en la catapulta y puede usar el potenciómetro para establecer la dirección en la que debe lanzarse. Luego, cuando suelte el sensor flexible, el pájaro se lanzará. Disfruté mucho haciéndolo, así que si está preparado para construir algo muy similar, este tutorial será útil. Este tutorial también será útil para controlar el cursor del mouse mediante el potenciómetro.
Requisitos de software y hardware:
Software:
- IDE de Arduino
- Procesando IDE
- Juego de Angry Birds en la computadora
Hardware:
- Arduino (cualquier versión)
- Potenciómetro
- Sensor flexible
- Resistencia de 47K ohmios
- Conexión de cables
- Tablero de circuitos
Concepto detrás:
La placa Arduino lee los valores del potenciómetro y el sensor Flex y los transmite a la computadora portátil / PC a través del puerto COM USB a través de la función normal Serial.write () . Luego leemos esta información usando Processing y controlamos el cursor del mouse usando la clase Robot en Java que es compatible con el procesamiento de IDE. Hemos programado el IDE de procesamiento de tal manera que cuando se tira del sensor Flex se hará un clic del mouse y en base a cuánto se tira, el puntero del mouse se moverá en la dirección X. Luego, en base al valor del potenciómetro, moveremos el cursor del mouse en la dirección Y, de esta manera podemos establecer la dirección en la que se debe lanzar el pájaro.
Diagrama de circuito:
El circuito para jugar al Angry Bird usando el sensor flexible y el potenciómetro es fácil.
Simplemente hemos conectado un potenciómetro y un sensor flex a las entradas Analógicas (A0, A1) del Arduino. La salida del sensor Flex también se baja usando una resistencia de 47K pull down.
Puede conectarlo directamente en una placa de prueba o soldarlos a una placa Perf y ensamblarlo en unos guantes o algo para hacerlo más creativo. Simplemente he usado una placa de pruebas para hacer mis conexiones como se muestra a continuación:
Programa Arduino:
El código completo de Arduino se proporciona al final del tutorial. A continuación se explican algunas líneas importantes.
Inicializamos el programa para que funcione con una velocidad de 9600 baudios y comenzamos a leer los valores del sensor Flex y el potenciómetro. Como sabemos, la función serial.write () puede enviar solo un byte de datos a la vez. Dado que un byte es de 8 bits y 2 ^ 8 = 256. Podremos enviar valores de 0 a 256. Así que tenemos que comprimir los valores de la salida del sensor Flex y la salida del potenciómetro en 0 a 256.
Para hacer eso usamos la función map () en Arduino. Todos los valores del sensor flexible se convierten de 5 a 100, por lo que cuando doblamos el sensor aumentará de 5 y cuando lo suelte volverá a 5. Para mencionar los clics del mouse, se usa el valor 1 y 0. Cuando se envía 1, se presiona el mouse y cuando se envía 0 se suelta el mouse.
si (FlexValue> = 65 && FlexValue <= 120) // mi sensor flexible varía de 65 a 120, su podría ser diferente {FlexValue = map (FlexValue, 120,65,0,100); // basado en la flexión convertir de 0 a 100 si (FlexValue> = 5) // 1 y 0 se utilizan para hacer clic con el mouse, así que comience desde 5 {Mclick = true; Serial.write (1); // 1 se envía para hacer clic con el botón izquierdo del mouse Serial.write (FlexValue); // El valor de flexión es la distancia para mover el mouse en la dirección X} else {Mclick = false; Serial.write (0);}}
De manera similar, los valores del potenciómetro se convierten de 101 a 200 mediante la función map () y se envían al puerto COM de la computadora portátil demandando la función Serial.write () como se muestra a continuación.
if (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // Basado a su vez convertir de 101 a 201 Serial.write (potValue); // El valor del bote es la distancia para mover el mouse en la dirección Y}
El resto del programa se explica utilizando los comentarios.
Código de procesamiento:
Processing es una aplicación de desarrollo de código abierto y se puede descargar y utilizar fácilmente para desarrollar proyectos interesantes usando Arduino u otros microcontroladores. Ya hemos realizado algunos proyectos utilizando Processing y puede consultarlos haciendo clic en los enlaces a continuación.
- Radio FM DIY con procesamiento
- Realidad virtual / control de gestos usando Arduino
- Sala de chat privada usando Arduino.
- Sistema de radar Arduino con aplicación de procesamiento y sensor ultrasónico
- Detección y seguimiento de rostros en tiempo real con Arduino
- Velocímetro de bricolaje con Arduino y procesamiento
- Juego de ping pong con acelerómetro Arduino
- Robot bípedo con Arduino
- Cámara de imágenes térmicas Arduino DIY
En este proyecto, hemos utilizado el IDE de procesamiento para leer los valores del puerto COM y controlar el puntero del mouse en función de los valores recibidos a través del puerto COM. El código de procesamiento completo para este controlador de juego Angry Bird se puede descargar desde el siguiente enlace:
- Código de procesamiento para este controlador de juego Angry Bird (clic derecho y 'Guardar enlace como')
El programa Arduino se puede encontrar al final de este tutorial. El código de procesamiento se modificó para adaptarse a nuestro propósito a partir del código proporcionado por yoggy en su página de GitHub.
Los datos provenientes del puerto COM deben leerse en la misma velocidad en baudios en la que fueron enviados desde Arduino. También verifique qué puerto COM está conectado su Arduino usando el administrador de dispositivos. Mi Arduino se conecta a COM3 y fue el 0 º puerto en mi ordenador y la velocidad de transmisión en Arduino 9600 era por lo que el código es el siguiente
puerto = nuevo Serial (este, Serial.list (), 9600);
Una vez que comenzamos a leer los valores, lo distinguimos al reconocerlo en función de su valor en cómo enviamos desde Arduino. Los valores se asignan nuevamente de 0 a 100 para que podamos controlar el mouse en función de ese valor.
if (puerto disponible ()> 0) {datos = puerto.read (); println (datos); // Leer los datos del puerto COM y guardarlos en data} if (data> = 101 && data <= 201) // Si el valor es de 101 a 201, entonces debe ser del Potenciómetro {Turn = int (map (data, 101,201,0,100)); // Usa ese valor para girar la catapullt} if (data> = 5 && data <= 100) // Si el valor es de 5 a 100, entonces debe ser de Flex Sensor {Pull = int (map (data, 5,100, 0,100));} // Usa ese valor para tirar de la catapulta if (data == 1) click = true; // Usa ese valor para presionar el botón del mouse si (data == 0) click = false; // Usa ese valor para soltar el botón del mouse
Una vez que categorizamos los datos, podemos controlar el mouse usando Robot Java Class en Processing. El comando robot.mouseMove (crntX-Pull, crntY + Turn); se puede usar para mover el mouse a cualquier posición deseada y las líneas robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); y robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); se puede utilizar para presionar o soltar el botón del mouse respectivamente.
if (click == false) // cuando no se tira Flex Sesnor {crntX = (int) p.getX (); crntY = (int) p.getY (); if (Tirar> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Suelta el botón del ratón} if (click == true) // cuando se tira de Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Pulsa el botón del ratón robot.mouseMove (crntX-Pull, crntY + Turn); // Mueve el mouse según el valor Flex y POT}}
El IDE de procesamiento cuando se inicia también mostrará un pequeño cuadro de diálogo en el que puede encontrar los valores de Pull, Turn y el estado de Mouse Click como se muestra a continuación
Este detalle se puede utilizar para depurar el Programa o corregir cualquier dato requerido.
Trabajando:
Para hacer que este proyecto de Angry Bird funcione usando el código provisto, ensamble su hardware de acuerdo con el diagrama de circuito y cargue el Código Arduino dado. Luego, observe a qué puerto COM está conectado su Arduino y realice los cambios necesarios en el código de procesamiento y ejecute el boceto de procesamiento.
Ahora, simplemente inicie el juego del pájaro enojado y coloque el cursor cerca de la catapulta y tire del sensor flexible para tirar del pájaro y establecer la dirección usando el potenciómetro. Una vez que se establece la dirección, suelte el sensor Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
¡Tu pájaro será lanzado al aire y BOOMM! En los cerdis. El trabajo completo se puede encontrar en el video que se muestra a continuación.
Espero que hayas disfrutado del proyecto y hayas podido construir algo similar. Si tiene alguna duda, puede comunicarse conmigo en la sección de comentarios o publicar su pregunta en el foro para preguntas técnicas.
¡Ahora es el momento de chocar contra esas alcancías y recuperar nuestros huevos de pájaro!