Very simple and easy to assemble 3D space mouse. It can input full 6 degrees of freedom (rigid motion) simultaneously.
Very easy to assemble.
Tripod mount (thread hole) is on the bottom side of the triangle shaft.
Two types of base (tilted and horizontal types) are provided (personally I prefer tilted type.)
Note : My code (mouse.ino) is tuned for Blender on ARM based Mac. It handles very frequent change of keyboard / mouse button operation correctly. Some modifications or tunings (ex. insert weight function delay() or limit motion) might be necessary for the other environment.
Note (Jan 1, 2023) : Code with conservative mouse operation (no frequent button press / release) is added. Please try "mouse-conservative.ino". You can configure this code for your app by modifying not "the code" but "table". Currently it has no function to switch between multiple apps, but it can be easily modified.
"pro micro" (ATmega 32U4 based micro controller, Arduino Leonardo compatible)
2mm tapping screws with various lengths
Tips
Print three copies of "ball-joint.stl".
Support structure is necessary to print "knob.stl". If you set it upside down on the build plate, support structure might be not necessary.
Select adequate length of screws. For "ball-joint.stl", shortest screws (M2 x 4mm) are recommended.
Currently the code does not use the tactile switches of the joystick controller.
The model is 120 degrees rotation symmetric. My code assumes [sensor 1 = at 2 o'clock], [sensor 2 = at 10 o'clock] and [sensor 3 = at 6 o'clock].
Connection of sensors and pro micro are as follos. [Sensor 1 to A0 and A1], [sensor 2 to A2 and A3] and [sensor 3 to A6 and A7]. These are defined in the source code.
Please try to use VCC instead of RAW for the power source for joysticks to improve the range of motion.
For tilted version, pro micro board is fixed by the inner structure and the hole of the cover.
For horizontal version, pro micro board is stored with the connector of microUSB in the housing space.