Important
This project was a fun learning experiment, but if you intend on building yourself a usable guitar adapter with a Pi Pico (or any other microcontroller), consider using Santroller instead. It's a much more polished piece of software with great documentation.
Small project to interface a Wii Guitar Hero controller to a PC using a Raspberry Pi Pico.
The code in this repository and the guide below are provided without any warranties, so if something goes wrong and you break your guitar, that's entirely on you.
- Raspberry Pi Pico
- Classic controller or Nunchuck extension cable (will be cut!)
- Continuity tester (multimeter or an LED + battery)
- Soldering iron
Only 4 wires need to be connected from the Pico to the guitar:
- 3.3V power
- Ground
- I2C Data (SDA)
- I2C Clock (SCL)
Cut the extension cable near the female connector end, leaving a good amount of cable to work with, then strip all the wires and use the continuity tester to map which pin on the connector goes to which wire. Having the wires mapped, solder/connect the wires to the Raspberry Pi Pico like this:
Female connector | Raspberry Pi Pico | |
---|---|---|
Pin 1 (3.3V) | -> | 3.3V pin |
Pin 2 (SCL) | -> | 7 (GP4) pin |
Pin 5 (SDA) | -> | 6 (GP5) pin |
Pin 6 (ground) | -> | Any GND pin |
image source - CC BY-SA 3.0
- Install Arduino IDE.
- Tools > Board > Board Manager > Install support for the RPi Pico: "Arduino Mbed OS RP2040 Boards".
- Tools > Manage Libraries > Install the library "WiiChuck". For pedal support (RJ11 jack) make sure you are using at least version 0.3.3 of the library. Neck slider support on World Tour guitars will be implemented in future versions of both the library and this program.
- Go to https://gitlab.com/realrobots/PicoGamepad and download the entire repo as a zip file (button to the left of "Clone").
- Sketch > Include Library > Add .ZIP Library > Select the file downloaded in the previous step.
- Write the sketch included in this repo to the RPi Pico.
At the top of the sketch, you will find some constants for the whammy bar and for both axis of the analog stick. In my guitar these are the minimum and maximum values returned by WiiChuck, but I don't know if these are the same across all guitars, or if mine is just returning weird values. There is an example sketch included with the WiiChuck library which you can use to determine these values for yours.