ARCADE FOREVER

ATmega32U4 Pro Micro como teclado, ratón o controlador de juegos para nuestras maquinas, (arduino leonardo)

« Older   Newer »
  Share  
view post Posted on 25/10/2020, 11:15     +2   +1   -1
Avatar

Superviviente marciano

Group:
Usuarios AFFA
Posts:
4,858
Reputation:
+200
Location:
Cádiz

Status:


Antes de comprar nada, aseguraos de que el aparato que os vais a agenciar tenga el chip ATmega32U4 sea arduino o de la marca el avión:

Seleccion02_37

Luego, nos familiarizamos con el, le damos besitos, lo abrazamos y le metemos un poquito de miedo suavemente con la letra U porque mas no le vamos poder a meter:

Seleccion01_41

Comprobamos que tiene una entrada USB tipo mini, creo, como tambien creo que tenemos dieciocho mil millones de cables de esa clavija por ahí revoleao en casa y si no ya sabes que toca comprar...

Seleccion03_28

También hay que darse cuenta de que tienes unos agujeros donde van los pines esos soldados, que lo pondremos si queremos o si no soldaremos los cables, me da igual pero recomiendo soldar los pines para conexiones faciles de quita y pon o incluso para protoboard, esa tablita con un montón de bujeritos pa probar...

De todos ellos, hay que localizar los llamados GND, que hay dos arriba y uno abajo, que serán la masa de nuestro dispositivo, mucho cuidao no nos la carguemos soldando que no hay mas.

Luego nos encontraremos los pines numerados del 2 al 9 y el 10, 16, 14 y 15 que son los que usaremos para el proyecto.
C
omo todavía no se el porqué de dicha numeración a no ser que alguien la comente aqui, voy a crear el ''Estandart A4E'' para controladores Joystick y/o teclados:

10 = Arriba
16 = Abajo
14 = Izquierda
15 = Derecha

2 = Boton 2
3 = Boton 3
4 = Boton 4
5 = Boton 5
6 = Boton 6
7 = Boton 1
8 = Boton Moneda
9 = Boton 1P Start

Ya que le hemos dado mimítos a la plaquita, ahora toca darle al ''Jargüer''...
Para la instalación os voy a poner un video de un tío que tiene to el arte del mundo y que no tiene ná darle permisos de instalación, como siempre en linux porque pa windows teneis trescientos mil millones de tutoriales por interné...

(No sabeis lo duro que es esto je je ;_; ;_; ;_; )

Ya es cuestión que os hagais con el interfaz y con la forma de programar, SI, programar puro y duro, que no tiene ná en verdad, y como para ejemplo es programar esta placa como un controlador arcade vamos a decirle que se comporte como un teclao, la vamos a usar pal mame, no quejarse, ya veremos en proximas ediciones.

Seleccion05_16

Creo que con este programa está bien explicado, aunque lo cuelgo entero aqui lo voy a explicar una mijita:

Para hacer un programa (este se basa en C#) primero hay que cargar las librerias pertinentes, luego definir a cada pin una variable que mejor llamarla ''tecla guión bajo tal'' mas que ná pa acordarte fácil. Usa una por cada pin, incluso para las direcciones, total 12

Los programas se dividen en:
-Incliddos y declaraciones (carga de librerias, asignaciones y/o variables)
-Programa de 1ª ejecución (donde lo escrito se ejecutará solo una vez)
-Programa de ejecución continua (donde lo escrito se ejecutará continuamente, tantas veces por segundo como se programe y en su defecto automaticamente)

En la parte de 1ª ejecución (void setup () a partir de ahora) damos la orden de pinMode que actua soble el pin que hemos definido anteriormente con una variable y le damos el parametro INPUT_PULLUP que significa cuando se pulse, hacer uno por tecla antes declarada.
Por último damos la orden Keyboard.begin(); para indicar que el programa actuará como teclado.

En la parte de ejecución continua o void loop() es donde pondremos los condicionales con IF que si se lleva el pin a masa (poned un boton arcade de por medio) equivale a un teclado pulsando la tecla que dijimos, y que le haga una pequeña demora (delay(10)) para luego actuar como interrumpiendo la pulsación, exactamente lo mismo que un teclado cuando pulsamos la tecla y la repite constantemente. Podemos programar esa demora al gusto aunque yo creo que con 10 es bastante

Ya solo falta programar la placa y probarlo, puede que suba un video, quiero probarlo en demás aparatos aparte del pc y también quiero cambiar las teclas, puesto que como uso teclado dvorak me cambian las teclas y quiero poner algo mas parejo...

-Y... ¿si he programado todo con letras porque no me va en mame ni en otros emuladores?...
-Pos no se, peazo de hijo de la grandisima, si es que despues de poner un emulador te llevas tres cuartos de hora configurando el mando y el teclao a tu gusto y despues no juegas, no tengo ni NPI idea de como solucionarlo...


En próximas entregas:
·Configurar o programar con teclas de dirección y escenciales para mame
·Programar pines para que actúe como ratón
·Programar para usar analógicos
Etc...
 
Web  Top
view post Posted on 26/10/2020, 07:20     +1   +1   -1

V.I.P.

Group:
Usuarios AFFA
Posts:
516
Reputation:
+12

Status:


Muy buena idea :)
 
Top
view post Posted on 26/10/2020, 08:55     +1   -1
Avatar

V.I.P.

Group:
Member
Posts:
1,275
Reputation:
+152
Location:
Vigo

Status:


Muy bueno.
Yo he pillado un par de arduino UNO para hacer controlador de joystick rotatorios, es parecido a lo que pones.



Edited by justez - 26/10/2020, 09:19
 
Top
view post Posted on 26/10/2020, 09:08     +1   -1
Avatar

Superviviente marciano

Group:
Usuarios AFFA
Posts:
4,858
Reputation:
+200
Location:
Cádiz

Status:


Sasto, esa es también la idea, me gustaría hacerlo en micro a ver como va. A ver si sacamos un "nuevo" interfaz
 
Web  Top
view post Posted on 26/10/2020, 09:21     +1   -1
Avatar

V.I.P.

Group:
Member
Posts:
1,275
Reputation:
+152
Location:
Vigo

Status:


Este que puse usa un ipac como interface entre el pc y arduino, habia que ver de hacerlo directo.
 
Top
view post Posted on 26/10/2020, 09:24     +1   -1
Avatar

Superviviente marciano

Group:
Usuarios AFFA
Posts:
4,858
Reputation:
+200
Location:
Cádiz

Status:


si, ya, tenemos que buscarnos las papas con el arduini :·3
 
Web  Top
view post Posted on 26/10/2020, 09:47     +1   -1
Avatar

V.I.P.

Group:
Member
Posts:
1,275
Reputation:
+152
Location:
Vigo

Status:


Aqui esta el codigo que usa para el rotary, seria añadir el tema de las direcciones y botones.

https://github.com/GadgetReboot/Arduino/tr...aryJoystickMame
 
Top
view post Posted on 26/10/2020, 10:46     +1   -1

V.I.P.

Group:
Usuarios AFFA
Posts:
516
Reputation:
+12

Status:


QUOTE (justez @ 26/10/2020, 08:55) 
Muy bueno.
Yo he pillado un par de arduino UNO para hacer controlador de joystick rotatorios, es parecido a lo que pones.

www.youtube.com/watch?v=iELbrBbQspM

Antes de ver el video te diría... que me han robado la idea :o:

https://arcadeforever.forumfree.it/?t=73398032


Yo para todas estas cositas prefiero el arduino leonardo, pro mini, etc. que tienen el atmega324u con soporte para usb en lugar del UNO. Aunque con el arduino UNO también se puede hacer. Incluso antes que el UNO usaría el Arduino Mega que tiene muchas más entradas/salidas.
 
Top
view post Posted on 26/10/2020, 11:23     +1   -1
Avatar

V.I.P.

Group:
Member
Posts:
1,275
Reputation:
+152
Location:
Vigo

Status:


Habia visto tu proyecto de rotatorio, muy chulo, yo me he hecho con un par de rotatorios, y viendo opciones.
Cierto, para conectar directamente al pc o raspberry es mejor con soporte usb.
 
Top
view post Posted on 27/10/2020, 16:38     +1   -1

V.I.P.

Group:
Member
Posts:
144
Reputation:
+6
Location:
San Nicolás Del Puerto

Status:


mmmm, tomo nota y asiento!! Bueno curro!!!

Saludos!!!
 
Top
view post Posted on 27/10/2020, 18:09     +1   -1

V.I.P.

Group:
Usuarios AFFA
Posts:
516
Reputation:
+12

Status:


Alguna vez hemos hablado por el foro del ledwiz clone que permite usar un arduino como interfaz joystick y otras cosas.

Ledwiz clone

Lo bueno de Arduino es que con el precio que tiene puedes montar todos lo que necesites. Yo en mi panel arcade tengo montados dos Arduinos y estoy muy contento con ellos.

Mis Arduinos
 
Top
view post Posted on 12/11/2020, 22:49     +1   -1
Avatar

Superviviente marciano

Group:
Usuarios AFFA
Posts:
4,858
Reputation:
+200
Location:
Cádiz

Status:


El siguiente código es para programarlo como joystic
QUOTE
#include <joystick.h>

#define BOTON_2 2 // constante para identificar boton 1 en pin 2
#define BOTON_3 3 // constante para identificar boton 2 en pin 3
#define BOTON_4 4 // etc...
#define BOTON_5 5
#define BOTON_6 6
#define BOTON_7 7
#define BOTON_8 8
#define BOTON_9 9

#define BOTON_10 10
#define BOTON_14 14
#define BOTON_15 15
#define BOTON_16 16

#define DEMORA 100 // constante para demora entre lectura de valores
Joystick_ Joystick; // crea instancia del objeto con el nombre Joystick

void setup() {
// put your setup code here, to run once:
pinMode(BOTON_2, INPUT_PULLUP); // pin 2 como entrada con resistencia de pull-up
pinMode(BOTON_3, INPUT_PULLUP); // pin 3 como entrada con resistencia de pull-up
pinMode(BOTON_4, INPUT_PULLUP); //etc...
pinMode(BOTON_5, INPUT_PULLUP);
pinMode(BOTON_6, INPUT_PULLUP);
pinMode(BOTON_7, INPUT_PULLUP);
pinMode(BOTON_8, INPUT_PULLUP);
pinMode(BOTON_9, INPUT_PULLUP);
pinMode(BOTON_10, INPUT_PULLUP);
pinMode(BOTON_14, INPUT_PULLUP);
pinMode(BOTON_15, INPUT_PULLUP);
pinMode(BOTON_16, INPUT_PULLUP); //
Joystick.begin(); // inicio de emulacion de joystick

// activar esta linea para invertir el eje Y
// Joystick.setYAxisRange(1023, 0); // invierte eje Y para modulo KY-023

}

void loop() {
// put your main code here, to run repeatedly:
Joystick.setXAxis(analogRead(A0)); // establece eje x con valor leido de A0
Joystick.setYAxis(analogRead(A1)); // establece eje y con valor leido de A1

if (digitalRead(BOTON_2) == LOW) { // si se ha presionado el pulsador de boton 1
Joystick.setButton(0, 1); // establece boton 1 (indice 0) como presionado
}
else{
Joystick.setButton(0, 0); // sino establece boton 1 como no presionado
}

if (digitalRead(BOTON_3) == LOW) { // si se ha presionado el pulsador de boton 2
Joystick.setButton(1, 1); // establece boton 2 (indice 1) como presionado
}
else{
Joystick.setButton(1, 0); // sino establece boton 2 como no presionado
}

if (digitalRead(BOTON_4) == LOW) { // etc...
Joystick.setButton(2, 1);
}
else{
Joystick.setButton(2, 0);
}

if (digitalRead(BOTON_5) == LOW) {
Joystick.setButton(3, 1);
}
else{
Joystick.setButton(3, 0);
}

if (digitalRead(BOTON_6) == LOW) {
Joystick.setButton(4, 1);
}
else{
Joystick.setButton(4, 0);
}

if (digitalRead(BOTON_7) == LOW) {
Joystick.setButton(5, 1);
}
else{
Joystick.setButton(5, 0);
}

if (digitalRead(BOTON_8) == LOW) {
Joystick.setButton(6, 1);
}
else{
Joystick.setButton(6, 0);
}

if (digitalRead(BOTON_9) == LOW) {
Joystick.setButton(7, 1);
}
else{
Joystick.setButton(7, 0);
}

if (digitalRead(BOTON_10) == LOW) {
Joystick.setButton(8, 1);
}
else{
Joystick.setButton(8, 0);
}

if (digitalRead(BOTON_14) == LOW) {
Joystick.setButton(9, 1);
}
else{
Joystick.setButton(9, 0);
}

if (digitalRead(BOTON_15) == LOW) {
Joystick.setButton(10, 1);
}
else{
Joystick.setButton(10, 0);
}

if (digitalRead(BOTON_16) == LOW) {
Joystick.setButton(11, 1);
}
else{
Joystick.setButton(11, 0);
}
delay(DEMORA); // demora de 100 mseg.
}

La ventaja que se puede usar hasta 12 botones, o bien 4 direcciones + select y start + 6 botones; o bien un analógico y 12 botones extras (incluidos select y start + 6 del strit faigter 2 + L y R por duplicado...

Para recreativa casi mejor que configurarlo como teclado, por lo menos a mi gusto.

A ver si para lo próximo puedo meterle mano ya al ratón, aunque ya me he cargao uno, a ver como lo reseteo y ya vá, je je je T_T
 
Web  Top
11 replies since 25/10/2020, 11:15   823 views
  Share