Mando Arcade CaseroPrototipo de mando arcade casero

Proyecto: Mando arcade casero de 9 botones – Parte 1: Prototipo

Hace alrededor de un año, cuando aún no tenía el blog en marcha, me encontré un viejo mando de NES que tenía guardado y se me ocurrió buscar alguna forma de hacer un adaptador USB para poder usarlo en el ordenador.

Encontré esta página donde explicaban cómo hacerlo con un ATtiny45. Probé a hacerlo y la verdad es que funciona perfectamente.

Por suerte el código fuente también estaba publicado así que le estuve echando un vistazo para ver cómo funcionaba. Resulta que el mando de NES daba el estado de cada botón uno a uno y el ATtiny45 recopilaba esta información y la enviaba por USB. En ese momento me vi capaz de algo que siempre había querido: hacerme mi propio mando de recreativa.

En primer lugar pensé en utilizar otro ATtiny45 para simular el mando de Nintendo, solo que con más botones. De esta forma no habría que toquetear mucho el programa. Sin embargo me encontré con el problema de que el ATtiny45 tiene sólo 8 patillas (de las cuales 2 son las de alimentación y tierra) y mi idea era que el mando tuviera aparte de la palanca unos 6 botones por lo que, con las cuatro direcciones de la palanca, tenía que ser capaz de leer 10 entradas. Pensé entonces en usar lecturas analógicas y escaleras de resistencias pero me puse a echar cuentas de por cuanto me saldrían los dos ATtiny45 más las resistencias y vi que igual era mejor comprar un ATmega168 o similar, que tiene pines de sobra, y me quitaba de problemas.

Entonces encontré esta web dónde explicaban cómo hacer un mando arcade de 8 botones y 4 direcciones con un ATmega8. Como lo que yo buscaba con esto no era sólo tener el mando sino también aprender y experimentar, encontrarlo hecho le quitaba toda la gracia, así que lo modifiqué para añadirle un botón más. Esto de cara al circuito no supuso gran cosa, buscar un pin que se pudiera usar como entrada y conectarle el botón, pero en lo que al programa respecta hubo que modificar el USB HID Descriptor y los USB HID Reports que se presentaban para que incluyeran el botón, ademas de habilitar el pin para lectura y realizarla utilizando funciones de bajo nivel, ya que la velocidad es un factor determinante para poder cumplir con las exigencias del estandar USB.

La verdad es que estoy muy contento, no sólo porque el mando funciona estupendamente, sino porque además he aprendido bastante sobre manejo directo de pines en chips ATMEL y cómo funciona el estandar USB.

Ahora me queda hacerle una estructura con madera (el cartón de la caja de zapatos ya ha empezado a darse de sí), estudiar si puedo publicar el código y cómo y, por supuesto, grabar un video de su funcionamiento, pero eso ya lo dejo para futuras entradas.

Proyecto: Mando arcade casero de 9 botones – Parte 2: Carcasa

Proyecto: Mando arcade casero de 9 botones – Parte 3: Diagrama y código

Comparte:

Deja una respuesta