Making a USB Game Controller





Introduction: Making a USB Game Controller

About: Collaborative workspace with digital and traditional fabrication tools, 3D printers, CNC machines, classes, events, and professional consulting services.

Here at NextFab, we designed a fully functional, USB game controller for Philly Tech Week. This project will be particularly tricky without some more serious electronics equipment or a local makerspace with the proper tools, but we thought we would post our walk-through in case you do have the access and would like to make your own!

Tools Needed:

Supplies Needed:

  • Electronic components (list attached later)
  • PCB (Order from our Gerber files)
  • 1/8" Acrylic
  • NinjaFlex filament
  • Hardware (list provided later)

Step 1: Circuit Board

The first step in making your own USB game controller is to grab an Arduino and start prototyping. It is important to make sure you use an Arduino Leonardo, Micro, or Due as they have HID (human interface device) capabilities. Essentially this means that they can act as a keyboard or a mouse and hooked up to a computer via USB. So to start interfacing, we hooked up 10 buttons to the Arduino Micro on digital pins 2-6, 8-10, 12 and 13 using a couple current-limiting resistors on the 3 LEDs.

To make a final controller, it was necessary to condense the whole perf-board - Arduino and all - to fit on one small PCB. We designed the board for this using Altium Designer and have exported and attached the Gerber files needed for board manufacture. So feel free to download ours and send them to your favorite fab house to make your custom controller.

Step 2: Board Assembly

In order to make your controller, once you get your board, you have to assemble it. Due to the surface-mounted microcontroller chip, this assembly will be difficult without a stencil and a pick and place machine. If you have access to a pick and place, the process is pretty easy. However, in assembling this board, you must mount all the surface-mounted components first if you plan to use solder paste and a reflow oven rather than a soldering iron. After doing this, you can mount all of your through-hole components and solder them in place. Attached is a list of the components needed to assemble the board. You can cross reference the component names in the attached materials list with the silk screen on the PCB to see what components belong where.

Step 3: Programming

Now that you have your fully functional PCB, it's time to program that microcontroller! We attached our functional code for the microcontroller, but feel free to customize your own. We are using the microcontroller to make keyboard presses that are typical for computer games, with the rightfour buttons mapping to the ASWD keys, and the left four mapping to to the arrow keys. The start button maps to the enter key and the select button maps to the space bar. The code can be fully customized and you just need to follow the comments to see how to change the mapping of the buttons. This can be customized for many different games!

Step 4: 3D Printed Buttons

The next step is making the rubber buttons! For this part of the process, we used a 3D printer and a material called NinjaFlex to print a rubber-like material. The 3D file we designed for the buttons is attached here.

Step 5: Laser-cut Enclosure

We then designed a simple laser-cut acrylic enclosure for the controller for which the illustrator file is attached. We countersunk the top 4 screw holes so that the screws wouldn't protrude. We used 1/8 inch acrylic - opaque for the top and translucent fr the bottom - but use whatever looks best!

Step 6: Assemble!

Grab your assembled boards, buttons, acrylic, and hardware and assemble! We used:

  • (4) Flat 3/4" #4-40 screws
  • (12) #4-40 hex nuts
  • (4) #4 0.185" spacers

The assembly order should be (face down):

  1. 4 Screws
  2. Front plate
  3. Buttons
  4. 4 Nuts
  5. 4 Spacers
  6. PCB
  7. 4 Nuts
  8. Back plate
  9. 4 Nuts



    • Oil Contest

      Oil Contest
    • Creative Misuse Contest

      Creative Misuse Contest
    • Clocks Contest

      Clocks Contest

    23 Discussions

    Does it work with RetroPie?


    Question 2 months ago

    Thank you for sharing your project. I'm able to burn the Leonardo bootloader and also to programm it with your code (via icsp-port). My problem is, that the usb-port seems not to work. My computer can't detect any usb-device. Do I need an additional driver, i though the Leonardo bootloader should be enough, right? Thanks!

    I'm Paralized.. My fingers don't work. I need a arcade style controller for ps3_4 with an joystick for the camera . can I get help or lead me who can ?

    This is cool and all, but why does almost everything on instructables use a 3d printer or a laser cutter?

    7 replies

    Mainly because they are pretty accessible and are a great way to make your electronics or other projects look polished and nice with a great casing!

    Yea I agree with you jhodges15. It's not as accessible as drills, dremels, or gluesticks and scissors.

    I feel like actually building a product is more fulfilling than printing it.
    I won't lie though, I'd love to have a printer.

    Exactly. I feel like so many people on here think everyone has access to these things. They are great and can help big time, but the average person doesn't have one.

    As a matter of fact, the 3D printer revolution was 2016. Now you can get one for $100. Thats probably less then most drills aso. You dont have to do the cases however. You could do some designing yourself and figure out a way to do it without the 3D printer. Even maybe just making it all in wood ...

    I honestly dont understand. A person makes something that they can share with others. They show step by step. He made it first for himself, then was nice enough to upload code details and pictures. Then after all that hard work, people complain about how it was made and what tools it was made with.

    I usually look at it and think. "Do I have the things to make this." No? Get them or move on. Or the other option I think of is, can it be made with other materials I have available?

    Just be happy people take the time to share these!

    I personally bought a 3d printer so I can make cool things like this!!

    Believe me I'm not trying to talk down on your instructable. I just prefer ones that use more common household tools. Something that is more DIY to the common person, instead of using tools a commercial builder would use.

    We definitely understand where you're coming from, however we are a makerspace and we have all these tools available for public access. So a lot of our Instructables are done using these tools and showcasing what can be done with access to them. They are very cool tools to use and are pretty available to the public, so we want to put out our designs for people to see what can be done when combining all sorts of different processes. Of course, not everyone can make all of them, however we want this to be available to those who can.

    I need average cost of all the materials please! !!!!

    Anybody on here from Richmond va if so hmu

    Do anybody has the ARDUINO CODE ?

    Maybe think about adding Bluetooth for a slick mobile game controller.

    NICE! good thing i can use the 3d printer and laser cutter at school.

    impressive. i like it.

    Sorry, which materials are you referring to? Most of the electronics come from DigiKey if that's what you are looking for.

    That's so cool! Great build. A few things confused me though...
    Why do and Select needs to be pulled down when the buttons are connected to ground? Also the pull down resistors are not there in schematic image.