Publicado el 28/07/2023 12:07:00 en Programación General.
Author: hielasangre | Total de votos: 10 Vote
La idea de este post es mostrar, como darle vida a una guitarra de videojuego de play 2 (en realidad podría ser de cualquier consola) y aprovecharla para darle una segunda vida... En mi caso yo la consegui por USD 7,5 .
Existe muchas formas de poder realizar esto mismo, de hecho si buscan en google sanjay guitar, tienes para varias plataformas; Pero mi idea era hacerlo a mi manera (que ganas de complicarme la vida, já)
El modelo de guitarra que conseguí es el de la krammer:

Además de eso, utilizamos cable UTP (pueden usar el que les resulte más cómodo) y una raspberry pico.
El funcionamiento de esto en realidad seria que cuando la raspberry pico, detecte que se presiono algún pulsador en los pines asignados, mande una señal de teclado a la PC.
En cuanto al procedimiento que realicé, fue desarmar por completo la guitarra, quitarle los cables que tenia que comunicaba las placas entre sí, y asignarlas a los pines en la raspi.


NOTA: en algunas guitarras debido a los componentes electrónicos que traen las placas (las cuales no se pueden quitar porque funcionan de soporte para los pulsadores de la guitarra, en el caso de querer sacarlos hay que fabricar nuevas placas) se deben cortar ciertas pistas del circuito, de lo contrario vamos a tener un efecto rebote o presión fantasma (se toca sola, como muchos de lo que estan leyendo el post)

Luego de cablear y soldar, improvise un código que me permite jugar, y comparto el mismo:
import time import digitalio import board import usb_hid from adafruit_hid.keyboard import Keyboard from adafruit_hid.keycode import Keycode botonA_pin= board.GP15 botonS_pin= board.GP14 botonJ_pin= board.GP13 botonK_pin= board.GP12 botonL_pin= board.GP11 botonArriba_pin= board.GP9 botonAbajo_pin= board.GP8 botonEnter_pin= board.GP7 botonH_pin= board.GP6 teclado = Keyboard(usb_hid.devices) botonA = digitalio.DigitalInOut(botonA_pin) botonA.direction = digitalio.Direction.INPUT botonA.pull = digitalio.Pull.DOWN botonS = digitalio.DigitalInOut(botonS_pin) botonS.direction = digitalio.Direction.INPUT botonS.pull = digitalio.Pull.DOWN botonJ = digitalio.DigitalInOut(botonJ_pin) botonJ.direction = digitalio.Direction.INPUT botonJ.pull = digitalio.Pull.DOWN botonK = digitalio.DigitalInOut(botonK_pin) botonK.direction = digitalio.Direction.INPUT botonK.pull = digitalio.Pull.DOWN botonL = digitalio.DigitalInOut(botonL_pin) botonL.direction = digitalio.Direction.INPUT botonL.pull = digitalio.Pull.DOWN botonArriba = digitalio.DigitalInOut(botonArriba_pin) botonArriba.direction = digitalio.Direction.INPUT botonArriba.pull = digitalio.Pull.DOWN botonAbajo = digitalio.DigitalInOut(botonAbajo_pin) botonAbajo.direction = digitalio.Direction.INPUT botonAbajo.pull = digitalio.Pull.DOWN botonEnter = digitalio.DigitalInOut(botonEnter_pin) botonEnter.direction = digitalio.Direction.INPUT botonEnter.pull = digitalio.Pull.DOWN botonH = digitalio.DigitalInOut(botonH_pin) botonH.direction = digitalio.Direction.INPUT botonH.pull = digitalio.Pull.DOWN while True: if botonA.value: teclado.press(Keycode.A) time.sleep(0.1) teclado.release(Keycode.A) time.sleep(0.1) if botonS.value: teclado.press(Keycode.S) time.sleep(0.1) teclado.release(Keycode.S) time.sleep(0.1) if botonJ.value: teclado.press(Keycode.J) time.sleep(0.1) teclado.release(Keycode.J) time.sleep(0.1) if botonK.value: teclado.press(Keycode.K) time.sleep(0.1) teclado.release(Keycode.K) time.sleep(0.1) if botonL.value: teclado.press(Keycode.L) time.sleep(0.1) teclado.release(Keycode.L) time.sleep(0.1) if botonArriba.value: teclado.press(Keycode.UP_ARROW) time.sleep(0.1) teclado.release(Keycode.UP_ARROW) time.sleep(0.1) if botonAbajo.value: teclado.press(Keycode.DOWN_ARROW) time.sleep(0.1) teclado.release(Keycode.DOWN_ARROW) time.sleep(0.1) if botonEnter.value: teclado.press(Keycode.ENTER) time.sleep(0.1) teclado.release(Keycode.ENTER) time.sleep(0.1) if botonH.value: teclado.press(Keycode.H) time.sleep(0.1) teclado.release(Keycode.H) time.sleep(0.1) time.sleep(0.1)
Hasta aquí este breve post. En una futura versión la idea es modificar otra guitarra, y dotarla de una comunicación RF para poder jugar de manera inalambrica.
__EOF__