This is a custom controller I designed for the game Ballistic Zen. It presents as a mouse and controls the horizontal mouse axis with a large knob. There are also two large buttons, and a potentiometer to control the vertical mouse axis.
Required Parts:
Seeeduino Xiao
AS5600 Magnetic rotary encoder breakout board & appropriate magnet
2x microswitches (v3-19m or equivalent)
2x 1k ohm resistors
10k potentiometer
2mm steel shaft
7x M3 heat set threaded insert
assorted M3 screws and standoffs
steel bearing balls (mine are .177 caliber airgun BBs)
Solder wires to the switches, potentiometer, and the encoder board
Melt heat set inserts into the six holes in the bottom of the case, and the small hole on the top of the knob.
Screw the microswitches into the case and eachother with standoffs as shown, or just run a long m3 through both with a nut on the far side.
Cut an 80mm length of 2mm steel shaft and insert it through the button brackets and the buttons themselves. (You may want to put some electrical tape or hot glue along the edge of the button slot where the buttons bottom out to improve the sound and feel of the buttons.)
Assemble the vertical thumbwheel carriage by lining up the potentiometer's nut and the thumbwheel inside before pushing the potentiometer shaft through the hole and tightening the nut.
Snap the vertical thumbwheel carriage into it's slot in the case.
Attach the encoder breakout board as shown.
Assemble a 40mm inner diameter ball bearing from this printables page: https://www.printables.com/model/263264 (I printed mine at 101.5% scale so they'd run a little looser), Glue it onto the case around the encoder.
Glue the encoder's magnet into the guide circle on the bottom of the knob
Press the knob onto the bearing. If it's loose, add thin pieces of paper as shims until it's firmly attached.
Solder everything to the seeduino xiao. Pins are as follows: 1=Potentiometer, 2=Right Button, 3=Left Button, 4=SDA, 5=SCL. The buttons need 1k ohm pulldown resistors, so I used some perfboard to keep everything in order and to make connecting all the grounds and 3v3s easier.
Snap the Seeeduino Xiao into place and put a dab of hot glue onto the end of it to keep it from rattling loose. you can also put something on the baseplate to hold it in.
Attach the rubbber feet to the baseplate and screw it into place.
Plug it into a computer and flash the firmware from the included arduino file.
You're done!
Model origin
The author marked this model as their own original creation.