Rotary Encoder D-Pad

by leonexis, published

Rotary Encoder D-Pad by leonexis May 2, 2013
0 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

2163Views 743Downloads Found in Electronics


An assembly that takes a standard rotary encoder and adds the ability to sense when the encoder is pushed in 4 directions. It also supports a center button if it is built in to the rotary encoder without activating any of the other directions.

It does this by having a disc that holds the rotary encoder balance on a cone in the bottom holder. This will allow it to rotate along the X and Y axis enough to push buttons on the top of the assembly.

This is the first part I designed to be printed and is for a small raspberry pi and xbmc based kitchen radio/viewer so most functions could be performed with one knob.

Other Parts:
Rotary Encoder: PEC11-4220F-S0024, Newark #02J2850

I'm not sure what the part number is for the push buttons used, but they have a base of 6.5mm squared and the full height with the button not pressed is 5.0mm. The lower limit of the switch makes the height 4.75mm


Print all three parts. Depending on your printer, you may need to clean up the parts to make sure there are no stringers and the surfaces are smooth. When I printed the center rotary encoder holder, I could not get the bottom indent to print correctly, so I corrected it with a dremel. Assemble the parts temprarily to make sure the center holder can move up, down, left, and right, but not rotate along the Z axis.

Attach four small push buttons to the bottom of the lid. I used hot glue in this case, which seems to work well so far. Make sure leads are point out.

Solder wires on the rotary encoder and feed the wires through the holes in the holder. Glue in place.

Feed the encoder's wires through the holes in the bottom container and make sure the holder can still move. It may help putting a layer of masking tape between the bottom container and the holder. This will make the holder stay center and provide a better feel in the completed unit.

Attach the top to the bottom container using 4x M3x20 screws and nuts. The holes may need to be drilled a bit wider if the print was not accurate.

Finally, solder wires to the four push buttons and connect them to your board as you would any other switch. You should now feel satisfying clicks when moving the encoder up down left and right. If it is too tight, you can place washers between the bottom and top components until you get all four buttons in the open state when not pushing the encoder.

Enjoy and happy hacking!

More from Electronics

view more

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App

It could also serve as the mechanism for an cheap digital "spacenavigator" for CAD usage.
An analog joystick used in the base would probably be better for that application.

However, a very nice project.

Thanks for the idea! I had thought it might be interesting to have a analog joystick with a rotary encoder as the actual stick, giving fixed X, Y, and free Z movement. Might be a neat tool for controlling a camera, either virtual (Z is movement) or physical (Z is zoom).

Though, what I don't understand is why people dont use game pads with 3D cad. It already has two 2D analog sticks, which gives 4 dimensions of movement (x, y, z, zoom). Honestly I think game pads might be the a much better input device for 3D cad/art than keyboards and mice. It also has way more buttons than a mouse and shouldn't be hard to map them to common commands.

I can also see where an all-in-one joystick might be handy as a single-handed input device much like a mouse, so a keyboard can still be used by the other hand at the same time. Tons of possibilities there!

I don't know if you know about these so I'm posting them

A XBOX360 joystick sensor could be used as a base for the device:


or a PSP module... probably less ideal:


There are plenty of places that they can be bought in other than DX.

Thanks for the link! It might get a bit awkward with such a long stick after combining the two, but the stick/knob would have to be bigger anyways to allow more control. I'll keep that link in mind if i work on the new input device.

I too have thought about using a analog game pad or perhaps a joystick in FreeCAD.

Currently joysticks doesn't seem to be supported, but as it is open source it eventually will be ;)
I have tried to compile it from scratch, but last time I got stuck with some dependency issues :(

The space explorer device has one advantage over a game pad, it very easy to grab when you move your hand away from the 105+ button keyboard.
This is due to the fact that the controller knob is so big, and you only need to grab one.