Tabla de contenido:

Controlador en movimiento: 8 pasos
Controlador en movimiento: 8 pasos

Video: Controlador en movimiento: 8 pasos

Video: Controlador en movimiento: 8 pasos
Video: Motores Paso a Paso 2024, Noviembre
Anonim
Controlador en movimiento
Controlador en movimiento
Controlador en movimiento
Controlador en movimiento
Controlador en movimiento
Controlador en movimiento

¿Te gusta jugar juegos en tu teléfono inteligente? ¿Estás cansado de jugar con torpes controles de pantalla táctil? ¿Odias olvidarte de cargar tu controlador Bluetooth? ¿Necesita usar ese cable para llevar que compró pero que nunca usó?

¿Por qué no crear el tuyo propio sobre la marcha?

Estoy seguro de que llego bastante tarde al juego (juego de palabras), pero recientemente descubrí que mi antiguo teléfono inteligente era capaz de jugar juegos retro a través de la emulación. Al crecer, era un gran fanático de los sistemas Game Boy y tengo buenos recuerdos de jugar durante horas y forzar la vista en largos viajes en automóvil tratando desesperadamente de encontrar un punto de guardado antes de que mi batería se agotara o el sol estuviera demasiado lejos del horizonte para ver mi pantalla. Ahora puedo jugar en mi teléfono y ceder a la nostalgia pero con una bonita pantalla retroiluminada. Gracias tecnología!

Descargo de responsabilidad: la emulación de juegos es un tema delicado y elude la línea de la piratería en algunos casos. ¡Infórmense y jueguen responsablemente!

Fondo:

Decidí seguir con este proyecto después de hacer un teclado de atajo. Mientras aprendía la biblioteca de teclado arduino y creaba atajos, enlacé algunos de los botones de prueba a WASD. Inmediatamente comenzó a trabajar con mis juegos de PC y eso hizo que las ruedas giraran. Casi al mismo tiempo, me quedé sin espacio en mi teléfono para libros de audio y busqué cómo usar una unidad flash USB con mi teléfono, ya que mi modelo no permite tarjetas microSD. Fue entonces cuando supe sobre OTG. OTG utiliza la carga de la batería de su teléfono para alimentar el dispositivo conectado a él. Esto incluye teclados, ratones y unidades flash, por nombrar algunos. El teléfono puede alimentar dispositivos de 5v y ¿adivinen qué requiere el micro arduino para funcionar? Fue una pareja hecha en el cielo.

Suministros

Arduino Micro

Tablero prototipo

Botones de 12 x 6 mm (utilicé interruptores momentáneos táctiles de tablero de pruebas clásicas)

Soldador y soldadura

impresora 3d

Cable sobre la marcha (OTG); Yo hice el mío

Cable de carga micro USB

Paso 1: diseño

Diseño
Diseño
Diseño
Diseño
Diseño
Diseño

Quería que mi controlador fuera portátil y ofreciera todos los botones que necesitaría para jugar juegos hasta la era de Super Nintendo. Esto significaba que necesitaría 12 botones. Cuatro para el pad direccional (d-pad) y ocho para A, B, X, Y, Start, Select, Left Trigger y Right Trigger. También tenía un requisito adicional de que quería que fuera simétrico para poder jugar con una mano con cualquiera de las dos. Ese requisito adicional puede parecer extraño, pero para dar un poco de contexto, debo mencionar que recientemente me encuentro sosteniendo a un bebé dormido y solo puedo usar una mano durante mi tiempo limitado de juego.

Con los requisitos definidos me propuse diseñar mi controlador en CAD. Yo personalmente uso OnShape, pero sé que muchas personas también tienen éxito con Fusion360. Me gustaría agradecer rápidamente a las demás personas de este sitio que diseñan sus propias creaciones. ¡Es un trabajo duro! El diseño que se me ocurrió fue súper simple, pero aún me tomó muchas horas estar satisfecho. Incluso mientras escribo esto, noto muchas mejoras que me gustaría hacer.

(Planeo guardar los archivos.stl en Thingiverse cuando el tiempo lo permita. Los archivos estarán allí para poder actualizarlos sin tener que cargar archivos aquí constantemente).

Paso 2: ¡Imprime tu creación

¡Imprime tu creación!
¡Imprime tu creación!

Tengo una impresora Ender 3 que solo he tenido durante unos meses. Es una gran impresora para comenzar si desea comenzar con la impresión 3D. No me di cuenta de lo fuera de control que estaba hasta que medí mis piezas para este proyecto. Hasta este proyecto, solo lo había usado para imprimir minis para juegos de mesa. Los minis salieron muy bien y no me importaron demasiado las dimensiones. Se necesitaron varios cubos de calibración y un nuevo rollo de filamento antes de que estuviera contento con los resultados.

Paso 3: preparación de su placa prototipo

Preparación de su placa prototipo
Preparación de su placa prototipo
Preparación de su placa prototipo
Preparación de su placa prototipo

Antes de soldar botones a una placa prototipo, probé todos los botones en una placa y probé mi código arduino al mismo tiempo. Revisaré el código en un paso posterior.

Ahora es el mejor momento para cortar su placa prototipo a medida. Utilice la carcasa del controlador impresa como guía y ajuste en seco los botones para asegurarse de que todo esté alineado. Solo tomé unas tijeras de alambre y corté el exceso de tabla, luego lijé los bordes con papel de lija de grano 150.

El cableado para el controlador es realmente sencillo ya que estamos usando las resistencias internas de pull up del arduino micro. Todos los botones van a una entrada y a tierra. Los botones que estoy usando son interruptores momentáneos táctiles genéricos de 6 mm.

Soldar los botones al arduino fue un pequeño rompecabezas divertido de resolver. Algunos de los botones estaban debajo del arduino y tuve que pasar cables por debajo antes de soldar el arduino a la placa prototipo. Si miras de cerca en el lado del botón del tablero, me perdí la izquierda y la derecha para el teclado direccional.

Para mi diseño específico, soldé los botones de la almohadilla direccional hacia arriba y hacia abajo (me perdí los botones de la almohadilla direccional izquierda y derecha) a la placa prototipo junto con algunos cables extra largos, luego volteé la placa y soldé el arduino. No tengo un diagrama porque en su mayoría soldé los botones uno a la vez al azar (podría subir uno si hay suficiente interés). Una vez asegurado el arduino, volteé la placa hacia el lado del botón y soldé el resto de los botones y sus cables.

Paso 4: Opcional: arregle la carcasa de su controlador

Antes del montaje final es un buen momento para lijar, rellenar los huecos y pintar la carcasa del controlador. Opté por omitir este paso para mi prototipo porque quería tener algo para usar de inmediato. Cuando inevitablemente mejore mi diseño a algo más pulido, le daré el doloroso trabajo que se merece.

Paso 5: Ensamblaje final

Montaje final
Montaje final

Ahora es el momento de colocar todos los botones y la placa prototipo completa en la carcasa. Usé tornillos para láminas de metal # 4-24 x 1/2 para mi diseño. Hacen el trabajo pero no encajan tan bien como me gustaría.

Paso 6: programa tu Arduino

Es posible que desee realizar este paso antes cuando todavía esté diseñando la placa o después de haber soldado todo a la placa prototipo. Simplemente me gusta tener esto en su propia sección.

El código es muy simple en relación con la mayoría de los programas arduino que he visto. Solo necesitamos asignar a cada botón un valor de teclado y el arduino recorrerá para verificar qué botones están presionados y enviar esa información a nuestro teléfono.

Para los interesados, utilizo la aplicación retroArch para jugar a mis juegos retro. Las teclas que utilicé están configuradas con la distribución de teclado predeterminada utilizada para retroArch.

#include #include "Keyboard.h" #define NUM_BUTTONS 12 const uint8_t BUTTON_PINS [NUM_BUTTONS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // a = 'x' // b = 'z' // x = 's' // y = 'a' // hombro izquierdo = 'q' // hombro derecho = 'w' // seleccionar = 'rshift '// start =' enter '// up =' key: up '// down =' key: down '// left =' key: left '// right =' key: right 'const char BUTTON_KEYS [NUM_BUTTONS] = {KEY_RIGHT_ARROW, KEY_RIGHT_SHIFT, 'z', 'x', 's', 'a', 'q', 'w'}; Botones de rebote * = nuevo rebote [NUM_BUTTONS]; configuración vacía () {para (int i = 0; i <NUM_BUTTONS; i ++) {botones .attach (BUTTON_PINS , INPUT_PULLUP); botones .intervalo (25); } // inicializar el control sobre el teclado: Keyboard.begin (); } void loop () {// verifica si el valor cambió para (int i = 0; i <NUM_BUTTONS; i ++) {botones .update (); if (botones .fell ()) {Keyboard.press (BUTTON_KEYS ); } if (botones .rose ()) {Keyboard.release (BUTTON_KEYS ); }}}

Paso 7: ¡Juega tus juegos

¡Juega tus juegos!
¡Juega tus juegos!

Alternativamente, este controlador se puede usar con una PC sin el cable OTG para enviar pulsaciones de teclas o macros. También tuve un amigo que dijo que un controlador como este también podría ser útil para dibujar tabletas, aunque nunca antes me había metido con uno.

Espero que haya encontrado útil este Instructable. A continuación se muestra una sección de lecciones aprendidas para aquellos que tengan curiosidad sobre lo que aprendí durante el proceso y lo que me hubiera gustado haber hecho de manera diferente.

Paso 8: lecciones aprendidas

CANALLA:

Nunca me he metido mucho con el software CAD en el pasado y tuve que aprender sobre la marcha con este diseño. Originalmente, opté por un diseño más vertical que encajaría en tus manos como un Wii Nunchuk. Mi limitado conocimiento del diseño con formas orgánicas fue mi perdición. Tal vez debería tomar Intructables en su clase de diseño CAD.

Botones:

Los botones que utilicé eran más ruidosos de lo que me gustaría (especialmente cuando intentabas evitar que alguien se despertara). Me gustaría encontrar algunos botones más silenciosos. La incorporación de resortes entre los botones y las tapas de los botones sería de gran ayuda para que la construcción se sienta más pulida. Los botones están demasiado flojos para mi gusto.

Soldadura:

Soy un novato en la soldadura y no tengo manos muy firmes. Soldar todos esos pequeños cables por todo el lugar tomó mucho más tiempo de lo que había anticipado. Si tuviera que hacerlo todo de nuevo, definitivamente trazaría un mapa por donde pasarían mis cables antes de agarrar la plancha. Eso mitigaría los errores que descubrí después de colocar el arduino en la placa prototipo y me habría ahorrado tiempo.

Recomendado: