Configuración de los botones

Una vez conectados los cables hay que pasar a la configuración de los botones en el sistema. Para ello recomiendo seguir un esquema como este:

Esquema vacío conexión GPIO
Esquema vacío conexión GPIO

En este esquema tenemos los pines, a qué se corresponden, qué vamos a conectar físicamente y cómo lo vamos a configurar. Los pines 27 y 28 no se pueden usar, ya que se usan para programar la eprom. He de decir que si lo hubiera hecho al principio me habría ahorrado muchos quebraderos de cabeza y sobre todo mucho tiempo. De nada ^_^

Lo primero es decirle al sistema qué hemos conectado en qué pin del GPIO.  Yo lo he hecho conectando por ssh a la Rπ por comodidad, pero se puede hacer directamente conectando un teclado USB.

Recordad que por defecto el login es pi y la contraseña raspberry.

Si estáis en la Pi y os ha entrado en EmulationStation, pulsando F4 se sale a la terminal.

Estas instrucciones valen para los dos casos. Tecleamos

      cd Retrogame

y a continuación

       sudo nano retrogame.c

En el archivo buscamos la siguiente sección (el aspecto es un poco diferente por los tabuladores):

// Input Output (from /usr/include/linux/input.h)
{ 2, KEY_UP }, //Player 1 up
{ 3, KEY_DOWN }, //Player 1 down
{ 4, KEY_LEFT }, //Player 1 left
{ 17, KEY_RIGHT }, //Player 1 right
{ 27, KEY_B }, //P1 Blue
{ 22, KEY_A }, //P1 Red
{ 9, KEY_ENTER }, //P1 White
{ 11, KEY_RIGHTSHIFT }, //P1 Black
{ 18, KEY_1 }, //1P start
{ 23, KEY_X }, //P1 Green
{ 24, KEY_Y }, //P1 Yellow
{ 25, KEY_5 }, //Coin
{ 7, KEY_ESC } //Esc

Nota: Lo que se escribe tras // se considera un comentario y no tiene efecto.

Esta es la configuración que he dejado yo. Falta añadir el jugador 2 (recordad que la última línea no lleva coma).

Básicamente se trata de incluir líneas de la siguiente forma:

{ <Pin GPIO>,     <tecla>}, 

Es decir, si queremos conectar el botón de 1P Start en el Pin 18 y asociarlo a la tecla 1 debemos incluir la línea

{ 18,     KEY_1 }, //1P start

Ojo, los pines con una única cifra se escriben sin el 0, es decir 9, no 09.

Una vez configurado tal como se han conectado los botones, pulsamos

      CTRL+o

para salvar con el mismo nombre y

      CTRL+x

para guardar. A continuación tecleamos para recopilar el archivo

      make

Si aparece algún error hay que revisarlo y repetir los pasos hasta que todo esté ok y procedemos a reiniciar la Pi con

      sudo reboot

para que se apliquen los cambios.

Ahora sólo queda configurar el emulador en si. Volvemos a la terminal vía ssh o saliendo de EmulationStation como antes y tecleamos

      /opt/retropie/configs/all

y luego

      sudo nano retroarch.cfg

Aquí tenemos que bajar un poco más hasta encontrar la sección con estas entradas:

input_player1_a = a
input_player1_b = b
input_player1_y = x
input_player1_x = y
input_player1_start = enter
input_player1_select = rshift
#input_player1_l = l
#input_player1_r = r
input_player1_left = left
input_player1_right = right
input_player1_up = up
input_player1_down = down
input_player1_5 = num5
input_player1_1 = num1
input_player1_esc = escape

Nota: lo que se escribe tras # se considera un comentario y no tiene efecto.

Aquí es donde configuramos cómo se van a comportar los botones en EmulationStation… no dentro del mame. Esto me ha costado bastantes pruebas entenderlo. Aquí se pone en cada línea lo siguiente:

<acción en EmulationStation> = <botón configurado en GPIO>

Es un de los momentos en los que la chuleta que ponía arriba viene de lujo.

Y pese a todo el camino recorrido, aún no hemos terminado. Queda configurar el mame, que no responde a la mayoría de los botones. ¿Y cómo he solucionado esto… de la manera más sencilla y directa: conectando el teclado a la Rπ, pulsando tab en uno de los juegos y configurando la primera opción que si no recuerdo mal (lo digo de memoria) es «Input general». Aquí cambiamos la configuración de los botones que nos interesen pulsando Enter cuando estemos encima de ese botón (del mame) y a continuación pulsando el botón que queremos que ejecute esa acción. Por ejemplo, si bajamos hasta «1 coin» y pulsamos Enter, esperará que pulsemos un botón, que en nuestro caso será el botón que hemos conectado como «Coin».

Un consejo muy importante… antes de cambiar la configuración porque no os funciona algún botón, comprobad que está correctamente conectado y no os pase como a cierto cenutrio que estuvo una hora toqueteando >_<

Después de todo el proceso, así me queda el siguiente esquema de conexión:

Esquema de conexión GPIO
Esquema de conexión GPIO con las conexiones a los botones y su correspondiente configuración

 

Por cierto, todo esto no lo habría conseguido sin la inestimable ayuda del tutorial de retrobuiltgames.com que podéis encontrar aquí.

26 comentarios sobre “Configuración de los botones”

  1. Ola tengo un problemilla para configurar los botones por los gpio entro en cd retrogame luego sudo nano retrogame.c y me sale una pantalla negro que arriba pone gnu nano 2.2.6 y no se como buscar el archivo puesto q la pantalla esta negro y no se como buscar para editar las líneas de los gpio me podías ayudar Esque de ordenadores yo no entiendo mucho mucho lo básico y poco más muchas gracias de ante mano y un saludo si ves que es muy lioso me puedes mandar tu teléfono y yo te llamo para que portavoz puedas explicármelo mejor de nuevo un saludo y tienes un gran blog

    1. Hola Abel.
      Te explico. cd retrogame lo que hace es entrar en la carpeta retrogame. Una vez en esa carpeta, teclea ls y pulsa enter. Te debe aparecer una serie de nombres entre los que debe de estar retrogame.c. Si no es así, ha habido algún problema con la instalación inicial, yo empezaría de nuevo. Y por lo que comentas de que la pantalla te aparece en negro, tiene toda la pinta de ser eso.
      Suerte

      1. Hola, yo salgo de emulationstation con F4 y escribo cd Retrogame y me dice que no hay ningun directorio con ese nombre. Que estoy haciendo mal??

          1. Esa es la que tengo instalada pero ni rastro de la carpeta retrogame. De todas formas lo de adafruit-retrogame (es eso no?) lo puedo instalar luego yo??

          2. La imagen que instalé yo me creó directamente esa carpeta y no tuve que instalar nada de adafruit-retrogame… Me estoy bajando la imagen que te he dicho para darle un vistazo y te cuento.

  2. Buenas, ha sido todo un hallazgo encontrar este blog. Estoy constuyendo una máquina de conduccion con Raspberry y para programar el GPIO sólo he encontrado tutoriales para encender leds y apagar la Raspberry (aficionados… ;). Bueno seguiré paso a paso tus indicaciones y seguramente te haga mas de una pregunta.

    Un saludo!!

    1. Espero que te sirva! La verdad es que hay poca información, pero ayuda a saber qué tocar para empezar a realizar ensayos de prueba-error 😀

      Suerte y ya nos contarás!

      1. Mi primer atasco viene cuando comentas en el tutorial que en estos dos archivos:

        retrogame y retroarch

        hay que localizar las selecciones con las distintas entradas que le queremos dar al GPIO, pero cuando entro en ambos archivos, me aparecen vacios. Al retrogame le intenté salvar habiendole creado un par de lineas o tres de comandos pero me daba error, no me dejaba guardar… sabes qué estoy haciendo mal?

        Muchas gracias!

        1. Esque me da la sensacion de que o no existen esos dos archivos, o están vacios por alguna razon… Estoy atascado en este punto.

          Gracias!

          1. Hola Rafolas, que tal te va! Veo que te cuidas, según las fotos que subes al Instagram! Eso esta muy bien… 🙂

            Tengo un problema, bastante fustrante, y esque estuve cableando los mandos de la recreativa según el plano que colgaste aqui, pero cuando fuí a conectar los cables, me percaté de que en tu esquema hay 20 pares de pines y en mi rasperry sólo hay 13 pares, por lo que creo que son dos versiones distintas de dispositivo. No sabras donde conseguir un esquema de los pines de mi versión? (que no sé si es la A o la B o la C o la bla bla bla…). Muchas gracias!!!

          2. Creo que esta es la forma más sencilla de identificarla:

            modelos de raspberry-pi

            Por otro lado desde la terminal puedes ejecutar el comando

            cat /proc/cpuinfo

            Según el número de «Revision» que te de, ese será tu modelo de R-π

            Model and Pi Revision 256MB Hardware Revision Code from cpuinfo
            Model B Revision 1.0 256MB 0002
            Model B Revision 1.0 + ECN0001 (no fuses, D14 removed) 256MB 0003
            Model B Revision 2.0
            Mounting holes 256MB 0004
            0005
            0006
            Model A
            Mounting holes 256MB 0007
            0008
            0009
            Model B Revision 2.0
            Mounting holes 512MB 000d
            000e
            000f
            Model B+ 512MB 0010
            Compute Module 512MB 0011
            Model A+ 256MB 0012
            Pi 2 Model B 1GB a01041 (Sony, UK)
            a21041 (Embest, China)
            PiZero 512MB 900092
            Pi 3 Model B 1GB a02082 (Sony, UK)
            a22082 (Embest, China)

            Aquí se ve mejor (en inglés)

            Coméntame qué versión tienes cuando lo averigües!

          3. Tengo que decirte, lamentándolo mucho, que he desistido de usar la Raspberry… No me apaño ni con los comandos ni la programación y cada paso que intento dar noto como se desprende un cachito de mi vida… Te agradezco la ayuda prestada, que me ha servido de mucho, aunque no haya llegado a buen puerto. Vuelvo al PC. Un saludo y que te vaya muy bien!!

  3. Hola,a mi también me pasa lo mismo ,que no me deja entrar con cd Retrogame ,puede ser que los que tenemos el nuevo modelo de Raspiberry con la segunda versión de la sd no nos funciona…
    He mirado conectado a la red y si tengo la carpeta retroarch.cfg… pero no puedo acceder a ella mediante comandos…¿alguna idea?? gracias ,un saludo.

  4. Muchas gracias Rafolas!

    Afortunadamente puedo abrir los archivos con el Sublime Text y editar facilmente. En cuanto pueda acoplarlos a la recreativa te contaré.

    Saludos!

      1. Buenas.
        Después de probar varias versiones de petropie y de intentar acceder a cd retrogame me doy por vencido y pido consejo.
        Tengo una raspberry pi3 y la configuración igual que la que tienes en el gpio, la de los 2 players y no tengo narices de hacer funcionar nada.tampoco puedo entrar en cd retrogame (ya que me dice no such file of directory) para seguir tu tutorial.
        Un saludo.

  5. Hola, tengo raspberry pi2 y no sale el archivo retrogame, quiero poner 2 player por gpio pero no encuentro nada de información, algún esquema para dos player y su configuración no hay nada por Internet.

  6. Hola, buena pagina..pero algun error…
    La distribución que se habla en este foro no corresponde a las oficilaes de la páguina Retropie..por eso cuando alguien se baja una distro oficial no está dicho directorio (Retrogame), es una versión retocada de un usuario que ha modificado dicha imagen para utilizar los GPios..
    En esta imagen si aparece el directorio Retrogame para poder seguir el tuto de esta página. La pongo por si alguno le interesa..
    Gracias y un saludo.
    http://supergameco.com.au/media/

    1. Muchas gracias por tu ayuda (y perdón por tardar tanto en aprobar el comentario). La verdad es que di tantas vueltas en tantas páginas diferentes que al final seguramente pasó lo que dices y acabé usando una imagen no oficial. Ahora estoy más metido con python, pero tengo intención de montar una recreativa «portátil» integrada en un mando arcade. Cuando me ponga a ello retomaré el blog seguro y tendré más cuidado!
      Gracias de nuevo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.