Introduction: Gamepaduino (Mando Para Videjuegos Hecho Con Arduino)

En este pequeño proyecto crearemos un gamepad (control de videojuegos),

utilizando un CircuitPlayground, aunque se prodría utilizar cualquier placa que cuente con un procesador atmega32u4. Lo que hacemos es programar nuestra placa como un periférico de entrada de datos (teclado). Esto se puede realizar con otras placas como la arduino UNO, pero hay que realizar otra serie de pasos he instalar programas externos.

Al realizarlo con una placa con el procesador atmega32u4, estamos reduciendo en gran media los pasos y por ende el tiempo de elaboración.

Step 1: Video Paso a Paso Del Proyecto


Step 2: ⛏Materiales⚒

En la realización de este proyecto se utilizaron:

1 Circuitplayground. Aunque este proyecto se puede realizar con cualquier placa arduino que posea un procesador atmega32u4 como por ejemplo: Arduino Micro, Arduino Yun, Arduino Robot, Lilypad USB, Arduino Leonardo.

1 Protoboard

6 Pulsadores (push button).

6 Resistencia de 220 ohm.

14 trocitos de cable de red.

Step 3: Montaje En Fritzing

Les comparto la imagen del proyecto montado en fritzing donde muestro como

realicé las conexiones de todos los componente

Step 4: Construcción

Paso 1

Empezaremos fijando la tarjeta a la protoboard para evitar que la tarjeta se mueva. Para fijarla podemos utilizar unas bandas elasticas.

Step 5: Construcción: Pulsadores Y Resistencias

Paso 2. Conectamos los pulsadores a la protoboard como se muestra en las imágenes. Tres pulsadores del lado derecho y tres del lado izquierdo.

A cada pulsador vamos a conectar una resistencia de 220 ohm a su pata derecha de la parte de abajo, como se muestra en las imágenes, estas resistencias irán conectadas a la fila de color azul.

Step 6: Construcción: Pulsadores Y 5V

Paso 3

Conectaremos ahora la pata izquierda del lado de abajo de los pulsadores a la fila de color rojo, donde posteriormente conectaremos los 5v de nuestra placa.

Al final las conexiones nos deben quedar como se muestra en las imágenes☝☝

Step 7: Construcción: Pulsadores Y Puertos Digitales De La CircuitPlayground

Paso 4

Ahora que ya tenemos conectados los pulsadores a GND a través de las resistencias de 220 ohm a la fila de color azul y a VCC a través de los trocitos de cable de red a la fila de color rojo de nuestra protoboard.

Continuamos ahora conectando nuestra placa (Circuitplayground):

Del Lado derecho de nuestra tarjeta tenemos los botones A, B, C

1- Conectamos el puerto digital #10 al botón C

2- Conectamos el puerto digital #9 al botón B

3- Conectamos el puerto digital #6 al botón A

Ahora del lado izquierdo de nuestra CircuitPlayground tenemos las flechas izquierda, arriba, derecha

4- Conectamos el puerto digital # 3 al botón que representa la flecha izquierda

4- Conectamos el puerto digital # 2 al botón que representa la flecha arriba

4- Conectamos el puerto digital # 0 al botón que representa la flecha derecha

Step 8: Programación: Librerias Y Variables

Realizaremos la programación en el IDE de Arduino

Incluimos las siguientes librerías

#include <Keyboard.h>
#include <Adafruit_CircuitPlayground.h>
 //si se usa otra placa arduino, esta librería no es necesaria

//Definimos los botones del lado derecho
int btna = 6;
int btnb = 9;
int btnc = 10;

//Definimos los botones del lado izquierdo
int fiz = 3;
int farriba = 2;
int fder = 0;

// Definimos las variables que se cargaran con los datos que nos den los pulsadores (botones del lado izquierdo y derecho)
int arriba;
int derecha;
int izquierda;
int botona;
int botonb;
int botonc;

Step 9: Programación: Void Setup

CircuitPlayground.begin(); // si usamos otra placa arduino esta parte no es necesaria
Keyboard.begin();  //inicializamos el Keyboard 

//a continuación definimos los puertos de nuestra placa, todos como entradas como se muestra
pinMode (farriba, INPUT); 
pinMode (fder, INPUT); 
pinMode (fiz, INPUT); 
pinMode (btna, INPUT); 
pinMode (btnb, INPUT);
pinMode (btnc, INPUT);

Step 10: ?‍?Programación?‍? Void Loop

//cargamos los valores de los 6 botones en las variables
arriba = digitalRead(farriba); izquierda = digitalRead(fiz); derecha = digitalRead (fder); botonc = digitalRead(btnc); botonb = digitalRead(btnb); botona = digitalRead(btna);

//Indicamos que teclas queremos que se activen cada vez que presionamos un boton

//flecha izquierda if (izquierda == HIGH){ Keyboard.press(KEY_LEFT_ARROW); }

//flecha arriba if (arriba == HIGH){ Keyboard.press(KEY_UP_ARROW); }

//flecha derecha if (derecha == HIGH){ Keyboard.press(KEY_RIGHT_ARROW); }

//boton c if (botonc == HIGH){ Keyboard.press(KEY_UP_ARROW); }

//boton b if (botonb == HIGH){ Keyboard.press(88); //EL 88 en código ASCII representa la tecla X }

//boton a if (botona == HIGH){ Keyboard.press(32); //EL 32 en código ASCII representa la tecla Espacio

}

} delay (90);

//esta parte de la programación es para indicarte la PC

// que tiene que liberar las teclas, porque si no las teclas quedarían presionadas

Keyboard.releaseAll();