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:
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:
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...
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:
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.
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...
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.
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.
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.
#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_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