# Arduboy Game Controller Hack

## Overview

https://www.youtube.com/watch?v=SkyNeS5vA-M

The Arduboy is a wonderful little open-source, Arduino-based, pocket-sized game machine -- but what if you want to use a full-sized joystick and buttons with it? You can, and it's surprisingly easy!!&nbsp;

I wanted to do this for fun, and to play the great Space Invaders-like game Picovaders. But you can also use these techniques in assistive technology to make the Arduboy accessible to people who have limited/impaired use of their thumbs for fine motor control. All sorts of buttons and switches can be substituted for the on-board controls.

https://www.youtube.com/watch?v=nMAjUt-zx9M

## Parts & Materials

Here's what you'll need to add a joystick and two buttons to the Arduboy:

### Small Arcade Joystick

[Small Arcade Joystick](https://www.adafruit.com/product/480)
This snappy 8-way joystick beckons you to play with it! It is rugged, and not too large, reminiscent of a Pac Man arcade cabinet. Unlike the potentiometer-based 2-axis and mini thumbsticks, this joystick uses 4 snap microswitches so it's good if you want a directional control but not the...

In Stock
[Buy Now](https://www.adafruit.com/product/480)
[Related Guides to the Product](https://learn.adafruit.com/products/480/guides)
![Small Arcade Joystick with red ball](https://cdn-shop.adafruit.com/640x480/480-00.jpg)

### Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)

[Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)](https://www.adafruit.com/product/1152)
Quick connector wire sets will make wiring up our arcade-style or metal buttons quicky-quick. Each wire comes as a 'pair' with two 0.11" quick-connects pre-crimped onto 20cm long wires. The wires are then terminated together in a JST 2.5mm/0.1" spaced 2-pin connector (we...

Out of Stock
[Buy Now](https://www.adafruit.com/product/1152)
[Related Guides to the Product](https://learn.adafruit.com/products/1152/guides)
![Angled shot of ten 20 cm long quick-connect wire pairs. ](https://cdn-shop.adafruit.com/640x480/1152-06.jpg)

### Arcade Button - 30mm Translucent Red

[Arcade Button - 30mm Translucent Red](https://www.adafruit.com/product/473)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. They're the same size as common arcade controls (often referred to as 30mm diameter) but have some nice things going for them that justify the extra dollar.  
  
First,...

In Stock
[Buy Now](https://www.adafruit.com/product/473)
[Related Guides to the Product](https://learn.adafruit.com/products/473/guides)
![Angled shot of a translucent red round 30mm arcade button. ](https://cdn-shop.adafruit.com/640x480/473-00.jpg)

### Arcade Button - 30mm Translucent Clear

[Arcade Button - 30mm Translucent Clear](https://www.adafruit.com/product/471)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. They're the same size as common arcade controls (often referred to as 30mm diameter) but have some nice things going for them that justify the extra dollar.  
  
First,...

In Stock
[Buy Now](https://www.adafruit.com/product/471)
[Related Guides to the Product](https://learn.adafruit.com/products/471/guides)
![Angled shot of a clear round 30mm arcade button. ](https://cdn-shop.adafruit.com/640x480/471-00.jpg)

### Silicone Cover Stranded-Core Wire - 30AWG in Various Colors

quantity: 6
[Silicone Cover Stranded-Core Wire - 30AWG in Various Colors](https://www.adafruit.com/product/2051)
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire for being extremely supple and flexible, so it is great for wearables or projects where the wire-harness has to...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2051)
[Related Guides to the Product](https://learn.adafruit.com/products/2051/guides)
![Silicone Cover Stranded-Core Wire - 30AWG in Various Colors laid out beside each other. ](https://cdn-shop.adafruit.com/640x480/2051-01.jpg)

You'll also want a box of some kind for your enclosure/stand. This can be a cigar box, as shown here, a cardboard box, or maybe you'll make your own design for 3D printing, laser cutting, or CNC milling!

## Tools

- Wire cutters
- Wire strippers
- Small Philips screwdriver
- Soldering iron and solder
- Drill with three bits sized:

  - 1-1/4" Forstner bit for buttons
  - 3/8" drill bit for joystick shaft
  - 5/32" drill bit for joystick screw mounts

- Two M4 screws and nuts to secure joystick
- Utility knife
- Chisel (optional for making wiring stand hole)
- Scrap wood and wood glue (optional for making Arduboy dock/stand)

# Arduboy Game Controller Hack

## Wiring the Controls

Adding external controls to a game system can sometimes be a bit tricky, as you need to reverse engineer things to understand how they work. Not so in the case of the Arduboy! Its open source nature means there are [readily available schematics online](https://community.arduboy.com/t/production-arduboy-schematic/702), and there are easily accessible pads available on the printed circuit board (PCB) for testing and soldering! (Thanks to the Arduboy community and Kevin Bates for all the info!)

Here's a section of the schematic with the pins for the switches called out:

![](https://cdn-learn.adafruit.com/assets/assets/000/048/148/medium800/gaming_schematic.jpg?1510690616)

## Solder Leads

To get started, turn off the Arduboy, then grab your screwdriver and open up the case. Remove the back of the case and you'll see the battery. CAREFULLY lift up the battery (the tabs are fragile, so it's good to support them while working in there), and you'll be presented with the beautiful silkscreen!

We'll connect the&nbsp;four switches of our joystick and the two buttons to the following pads, using the color of wires noted (you can also refer to the wiring diagram below):

- **Joystick UP to A0: RED**
- **Joystick RIGHT to A1: WHITE**
- **Joystick DOWN to A3: BROWN**
- **Joystick LEFT to A2: YELLOW**
- **Button A to D7: BLUE**
- **Button B to D8: GREEN**
- **all grounds to GND: BLACK**

![](https://cdn-learn.adafruit.com/assets/assets/000/048/149/medium800/gaming_PB140063_2k.jpg?1510691287)

Cut 10" lengths of your silicone wires and strip&nbsp;some insulation from the ends. Since we need six distinct colors, I cut two lengths of the white wire and colored one brown with a permanent marker.

Next, tin the ends of the wires to prepare them for soldering to the board. You can follow the above list and image for the location of the solder points. I like to tin the pads with a bit of solder, too, and then bring the wire to the pad and reheat both to make a good connection.

Info: 

![](https://cdn-learn.adafruit.com/assets/assets/000/048/170/medium800/gaming_arduboyWiring.jpg?1510695358)

![](https://cdn-learn.adafruit.com/assets/assets/000/048/151/medium800/gaming_PB140064_2k.jpg?1510691479)

You can now test your connections by turning on the Arduboy and grounding each of the wires by touching them to the black wire. This will operate all of the four D-pad direction buttons and the A and B buttons. If everything is working fine, you can move on to soldering the wires to the joystick and arcade buttons.

Carefully fold the battery back down, set the Arduboy on top of the case front and buttons, and close up the back of the case. You'll want to only use the two top screws so you don't pinch the wires. Alternately, you could cut a small groove in the Arduboy's plastic case at the bottom to give the wire's room to escape even when all four screws are in place.

![gaming_PB140059_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/159/medium640/gaming_PB140059_2k.jpg?1510692140)

![gaming_PB140061_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/160/medium640/gaming_PB140061_2k.jpg?1510692149)

![gaming_PB140057_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/161/medium640/gaming_PB140057_2k.jpg?1510692159)

![gaming_PB140054_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/162/medium640/gaming_PB140054_2k.jpg?1510692169)

![](https://cdn-learn.adafruit.com/assets/assets/000/048/164/medium800/gaming_PB140045_2k.jpg?1510692238)

## Wire Harnesses

Next, you'll&nbsp;connect&nbsp;the silicone wires to the wiring harnesses/interconnects of the joystick and buttons. The joystick&nbsp;switch&nbsp;wiring connector has five conductors:

- Red = UP
- Orange = RIGHT
- Brown = DOWN
- Yellow = LEFT
- Black = ground

The red arcade button will be the Arduboy's button A, so it'll connect to Arduboy blue and ground.

The clear/white arcade button will be the Arduboy's button B, so it'll connect to Arduboy green and ground.

The connections from the Arduboy will be as follows:

- Red to joystick red
- White to joystick orange
- Brown to joystick brown
- Yellow to joystick yellow

&nbsp;

Again, you can refer to the wiring diagram above. Trim the white plastic JST connector off of two pairs of arcade connector wires, then strip the ends. Two of these will connect to ground and two to the D7 and D8 pads respectively on the Arduboy.

Place a small piece of heat shrink tubing over one wire in each pair to be soldered. Then, twist the wires together, solder, and cover with the heat shrink tubing, then heat it to shrink.

Note: you can connect all of the ground wires together and solder/heat shrink the connection.

![gaming_PB140053_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/171/medium640/gaming_PB140053_2k.jpg?1510695648)

![gaming_PB140050_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/172/medium640/gaming_PB140050_2k.jpg?1510695660)

![gaming_PB140051_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/173/medium640/gaming_PB140051_2k.jpg?1510695669)

![](https://cdn-learn.adafruit.com/assets/assets/000/048/168/medium800/gaming_PB140049_2k.jpg?1510694369)

# Arduboy Game Controller Hack

## Build and Assemble the Cabinet

![](https://cdn-learn.adafruit.com/assets/assets/000/048/175/medium800/gaming_PB140043_2k.jpg?1510695823)

Now that your Arduboy is wired, you can build your cabinet. There are many different materials and techniques you can use, from cardboard to LEGO, and 3D printing to woodworking. I'll show one method here, but feel free to get creative!

## Holes

I drilled three holes for the joystick shaft and mounting screws, plus two more for the arcade buttons. I matched the sizes of bits to the job:&nbsp;

- 1-1/4" Forstner bit for buttons
- 3/8" drill bit for joystick shaft
- 5/32" drill bit for joystick screw mounts

Start by measuring, marking, and drilling for the joystick using the two proper size bits.

Then, do the same for the buttons, switching to the large Forstner bit. To prevent tear-out, it helps to place some scrap wood underneath the back side of where you're drilling the hole (see l[ive build video](https://www.youtube.com/watch?v=nMAjUt-zx9M) for details.)

![gaming_b_PB140005_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/176/medium640/gaming_b_PB140005_2k.jpg?1510695976)

![gaming_b_PB140008_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/177/medium640/gaming_b_PB140008_2k.jpg?1510695994)

![gaming_b_PB140009_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/178/medium640/gaming_b_PB140009_2k.jpg?1510696120)

![gaming_b_PB140003_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/179/medium640/gaming_b_PB140003_2k.jpg?1510696142)

![gaming_b_PB140010_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/180/medium640/gaming_b_PB140010_2k.jpg?1510696152)

## Dock
- You'll also need to cut a hole to feed the wiring and connectors from the outside to the inside of the box
- I made a rectangular series of cuts with a utility knife, and then used a chisel to cut out the hole big enough to fit the joystick interconnect
- I also cut small pieces of scrap wood to form a dock base to hold the Arduboy at a jaunty angle

![gaming_b_PB140011_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/181/medium640/gaming_b_PB140011_2k.jpg?1510696314)

![gaming_b_PB140012_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/182/medium640/gaming_b_PB140012_2k.jpg?1510696322)

![gaming_b_PB140013_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/183/medium640/gaming_b_PB140013_2k.jpg?1510696335)

![gaming_PB140044_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/184/medium640/gaming_PB140044_2k.jpg?1510696517)

## Assembly

Now, you can&nbsp;attach the buttons and joystick, then feed&nbsp;all of the wiring into the box from the top and make the connections inside!

## Buttons
Push both buttons into their holes. They will snap into place, with the plastic retention clips that are molded into the button securing them.

![gaming_PB140042_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/185/medium640/gaming_PB140042_2k.jpg?1510696543)

![gaming_PB140039_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/186/medium640/gaming_PB140039_2k.jpg?1510696558)

![gaming_PB140038_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/187/medium640/gaming_PB140038_2k.jpg?1510696569)

![gaming_PB140036_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/188/medium640/gaming_PB140036_2k.jpg?1510696577)

## Joystick
- Unscrew the ball from the end of the joystick, and remove the white collar. Then, push the joystick into place from the underside of the box
- Make sure you maintain the proper direction of the joystick, with the interconnect facing "up"
- Screw in the joystick from the topside, with the nuts underneath
- Replace the white collar, and screw on the red ball

![gaming_PB140035_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/189/medium640/gaming_PB140035_2k.jpg?1510696748)

![gaming_PB140033_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/190/medium640/gaming_PB140033_2k.jpg?1510696781)

![gaming_PB140034_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/191/medium640/gaming_PB140034_2k.jpg?1510696790)

![gaming_PB140031_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/192/medium640/gaming_PB140031_2k.jpg?1510696811)

![gaming_PB140029_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/193/medium640/gaming_PB140029_2k.jpg?1510696842)

![gaming_PB140028_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/194/medium640/gaming_PB140028_2k.jpg?1510696862)

## Connections
- Push the interconnect wires into the box from the top side
- Connect the&nbsp;joystick interconnect to the joystick as shown
- Push the quick connect terminal from the&nbsp;green wire onto&nbsp;either lug on the&nbsp;white B button
- Push the terminal from either ground quick connect onto the other lug of the white B button
- Repeat this for the red A button

![gaming_PB140025_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/195/medium640/gaming_PB140025_2k.jpg?1510697046)

![gaming_PB140024_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/196/medium640/gaming_PB140024_2k.jpg?1510697054)

![gaming_PB140023_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/197/medium640/gaming_PB140023_2k.jpg?1510697066)

![gaming_PB140022_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/198/medium640/gaming_PB140022_2k.jpg?1510697080)

![gaming_PB140021_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/199/medium640/gaming_PB140021_2k.jpg?1510697111)

![gaming_PB140017_2k.jpg](https://cdn-learn.adafruit.com/assets/assets/000/048/200/medium640/gaming_PB140017_2k.jpg?1510697265)

![](https://cdn-learn.adafruit.com/assets/assets/000/048/201/medium800/gaming_PB140016_2k.jpg?1510697275)

Your assembly is complete! Close up the bottom of the box, and then set the Arduboy into its dock!

![](https://cdn-learn.adafruit.com/assets/assets/000/048/202/medium800/gaming_PB140014_2k.jpg?1510697322)

![](https://cdn-learn.adafruit.com/assets/assets/000/048/203/medium800/gaming_PB140012_2k.jpg?1510697332)

Turn it on and enjoy some tiny games with big controls!!

![](https://cdn-learn.adafruit.com/assets/assets/000/048/204/medium800/gaming_PB140010_2k.jpg?1510697389)


## Guide Products

### Arduboy FX - Open Source Card-Sized Gaming Boy

[Arduboy FX - Open Source Card-Sized Gaming Boy](https://www.adafruit.com/product/3264)
What do you get when you cross Arduino with a Game Boy? **&nbsp;Arduboy FX - Open Source Card-Sized Gaming Boy !** &nbsp;The game system the size of a credit card!&nbsp;Create your own games, learn to program or download from a [library...](https://community.arduboy.com/c/games)

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/3264)
[Related Guides to the Product](https://learn.adafruit.com/products/3264/guides)
### Small Arcade Joystick

[Small Arcade Joystick](https://www.adafruit.com/product/480)
This snappy 8-way joystick beckons you to play with it! It is rugged, and not too large, reminiscent of a Pac Man arcade cabinet. Unlike the potentiometer-based 2-axis and mini thumbsticks, this joystick uses 4 snap microswitches so it's good if you want a directional control but not the...

In Stock
[Buy Now](https://www.adafruit.com/product/480)
[Related Guides to the Product](https://learn.adafruit.com/products/480/guides)
### Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)

[Arcade Button Quick-Connect Wire Pairs - 0.11" (10 pack)](https://www.adafruit.com/product/1152)
Quick connector wire sets will make wiring up our arcade-style or metal buttons quicky-quick. Each wire comes as a 'pair' with two 0.11" quick-connects pre-crimped onto 20cm long wires. The wires are then terminated together in a JST 2.5mm/0.1" spaced 2-pin connector (we...

Out of Stock
[Buy Now](https://www.adafruit.com/product/1152)
[Related Guides to the Product](https://learn.adafruit.com/products/1152/guides)
### Arcade Button - 30mm Translucent Red

[Arcade Button - 30mm Translucent Red](https://www.adafruit.com/product/473)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. They're the same size as common arcade controls (often referred to as 30mm diameter) but have some nice things going for them that justify the extra dollar.  
  
First,...

In Stock
[Buy Now](https://www.adafruit.com/product/473)
[Related Guides to the Product](https://learn.adafruit.com/products/473/guides)
### Arcade Button - 30mm Translucent Clear

[Arcade Button - 30mm Translucent Clear](https://www.adafruit.com/product/471)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. They're the same size as common arcade controls (often referred to as 30mm diameter) but have some nice things going for them that justify the extra dollar.  
  
First,...

In Stock
[Buy Now](https://www.adafruit.com/product/471)
[Related Guides to the Product](https://learn.adafruit.com/products/471/guides)
### Silicone Cover Stranded-Core Wire - 30AWG in Various Colors

[Silicone Cover Stranded-Core Wire - 30AWG in Various Colors](https://www.adafruit.com/product/2051)
Silicone-sheathing wire is super-flexible and soft, and its also strong! Able to handle up to 200°C and up to 600V, it will do when PVC covered wire wimps out. We like this wire for being extremely supple and flexible, so it is great for wearables or projects where the wire-harness has to...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2051)
[Related Guides to the Product](https://learn.adafruit.com/products/2051/guides)

## Related Guides

- [PyPortal Alarm Clock](https://learn.adafruit.com/pyportal-alarm-clock.md)
- [DIY Adaptive Game Controllers](https://learn.adafruit.com/diy-adaptive-game-controllers.md)
- [CircuitPython MIDI to CV Skull](https://learn.adafruit.com/circuitpython-midi-to-cv-skull.md)
- [Traffic Light Conference Badge](https://learn.adafruit.com/traffic-light-conference-badge.md)
- [Using Bluefruit BLE to Give Disabled Users Switch Control Access to IOS Devices](https://learn.adafruit.com/ios-switch-control-using-ble.md)
- [JOY Controller for Adafruit Feather](https://learn.adafruit.com/joy-controller-feather.md)
- [Attachécade](https://learn.adafruit.com/attache-arcade.md)
- [Big Key Switches Macro Pad](https://learn.adafruit.com/big-key-switch.md)
- [Arcade Buttons](https://learn.adafruit.com/arcade-buttons.md)
- [Theme Park Wait Time Display](https://learn.adafruit.com/park-wait-time.md)
- [Ambient Sound Machine](https://learn.adafruit.com/ambient-machine.md)
- [Leverless Controller](https://learn.adafruit.com/leverless-controller.md)
- [Feather RP2040 DVI Video Synth](https://learn.adafruit.com/feather-rp2040-dvi-video-synth.md)
- [Pi SSD Media Server](https://learn.adafruit.com/pi-ssd-media-server.md)
- [4x4 Rotary Encoder MIDI Messenger](https://learn.adafruit.com/4x4-rotary-encoder-midi-messenger.md)
