Introduction: One-Hand 3D Printed Controller for Microcontroller Projects

About: The name "Ikkalebob" was invented by my cat when she ran across the keyboard. I attempt all manner of projects, from home engineering to prop replicas. Follow me on Instructables and my YouTube chann…

I wanted a compact and easy to use controller for all the eye mechanisms I've designed that would allow me to control them easily with one hand - including away to move the eyes, adjust how open/closed the eyelids are and blink. Since most controllers don't have a dial you can use to select a specific value (and then let go of it), this prompted me to design a controller that has a push-to-make switch and a joystick as well as a potentiometer you can use to fine-tune a value. It uses easy-to-acquire parts, but if you'd prefer to use a high-quality joystick, the design can accommodate for that too. Of course you could use this design for any application you like.

This design is quite easy to make using easy to acquire parts, and the 3D printing doesn't need to be particularly good either. The hardest part is soldering, but I'd say it would be possible to build it using just jumper cables - not that I'd recommend it!

NOTE: I'm unable to upload the download package at the moment, I'll upload it when I can but until then the download can be found on my website:


  • Joystick - either use one of those cheap and nasty unbranded ones that come in arduino starter kits ( check images to see if you might already have one) or use a Parallax Inc 2-Axis Joystick Module if you want a better response:
  • Push-to-make switch - the controller is designed to use one of these but you could probably make any small cylindrical switch fit.
  • 10k Potentiometer - designed to use these but again, a similar sized one is likely to fit with some adjustments.
  • Screws: A small kit like this should do if you don't already have these lying about:
    • 4* M3 x 4/5/6mm screws (only if using cheap joystick)
    • 4* M2 x 4/6/8mm screws (only if using parallax joystick)
    • 4* M3 x 8/10/12mm screws
  • 6+ core wire with an outer diameter of around 4.5mm/5AWG: - although realistically you can use whatever cable you want!
  • (optional) A cable grommet for a 6.5mm hole and 4.5mm wire:

Step 1: Printing

The design of the controller is thick and sturdy enough that I think you'll be able to get away with a relatively low print quality. For mine, I used a layer height of 0.2mm, but I had a prototype that was 0.3mm and that worked fine. I printed everything flat-face down and used PLA.

I also set the supports to only be generated for overhangs less than 10°, but you may find you need a bit more than this. I can get away with it because I have a really chunky cooling fan :).

Step 2: Post-Processing

The holes are designed to be slightly undersized so that the screws can bite into the 3D printed material, so depending on the accuracy of your printer you may need to drill out some holes to be a little bigger. You can refer to the graphic to see which holes need to be which size.

I don't think sanding is really necessary for this project, but if you want a really premium feel there's nothing to stop you from getting it all nice and smooth. The only part that could cause an obstruction if its poorly printed is the large hole on the top that the joystick pokes through, so consider sanding this part back a little.

Step 3: Assembly and Wiring

When all your parts are printed you can begin the assembly, you might want to refer to the video to make sure you're clear on how it goes together.

Slide the potentiometer block on to the shaft and insert it into the left body with the pins sticking up, tightening the screw a little to hold it in position. Note that the potentiometer should have a little tab sticking up on the top face - this goes into a gap in the left body. The right body can then be screwed to the left using 2* M3 x 10mm screws, and the push-to-make switch can be slid into its hole and the nut tightened. I'd also recommend that you pop the cable grommet in halfway through tightening the two sides together, this can be a bit fiddly. Ensure that everything is able to move smoothly, and prepare yourself for soldering - its easiest to do all the soldering with t

The soldering is quite tricky, and it will depend on which joystick you're using. Refer to the diagrams and the video to see how it's wired together and make sure you use shrink tubing on all your connections and you should be fine. Start by sliding your cable through the grommet and freeing up the individual strands. I'd recommend you solder the potentiometer first, and this will form a convenient little hub for you to solder the other wires to. I soldered the button next, then the joystick. Note that if you're using the parallax joystick, you need to power both potentiometers individually with the L/R+ and U/D+ connections, but you only need to wire one GND connection.

If you'd like to use the switch built into your joystick you can wire that up in place of the separate button (and maybe use the standalone switch for something else) but for my animatronic eyes its much easier to have the switch I use for blinking totally seperate from the joystick.

Once its all wired up, test it with the code provided and screw the joystick to the top body - if using the cheap joystick you will need 4* M3 x 5mm screws, whereas the Parallax joystick needs 4* M2 x 4mm or 6mm screws. Then tuck all the wires neatly away and join the two halves with 2* M3 x 5mm screws.

You're finished! If you're looking for something to test it out on, why not check out some of my animatronic eye mechanisms?

If you're interested in following my progress on the various robotics and animatronics projects I have on the go, consider checking out my Patreon page to get a look behind the scenes.