Step 1: HardwareArduinoI want to use a small Arduino board to keep this version as compact as possible. I have some pro trinkets, but they can't be used well for keyboard and mouse simulation because USB is not fully implemented on trinkets. For this project, I used adafruit's 5V 16mhz itsy Bitsy, which can use the standard hid library as a USB keyboard and mouse.
LeverThis is the type of joystick used in the game controller. They are two shafts and have a temporary switch when the lever is pushed in. They are easy to find online. If you only want to buy one, they can be between $4 and $10, but you can buy them in bulk on Amazon for about $11.Note that similar joysticks of adafruit and sparkfun have different pins from all the other pins you find on the Internet. Pay attention to it when you connect it.
On Arduino, this project uses A0 as the switch, A1 as the X axis and A2 as the Y axis. This leaves 19 other input pins for you to be creative.The joystick 5V comes from the 5V USB power supply (marked as this on itsy Bitsy). It has a ground - connected to the Arduino ground.Step 2: Software
The Arduino code is very simple. I've programmed some of the Lightroom keyboard shortcuts I use to rate pictures. Push the switch to switch between the magnifying glass ("e") and grid ("g") views. Moving the joystick left or right will go to the previous (left arrow) or next (right arrow) picture. The push rod adds a star ("[") upward and pushes down to remove the sign ("U"). (trust me, this makes sense for the way I rate images.) you can change the code to do anything.The main cycle first reads the switch status. If it changes from high to low, it switches and types' e 'or' g 'to switch between the loupe and grid views.
Next, the program maps the analog values of the joystick (0 to 1024) to different ranges (- 5 to 5). The code recognizes the / - value 5 as an operation to send characters, so you must move the joystick near the end of its range to send keyboard shortcuts. Then they must pass 0 to send another keystroke. The code to do this is very short, and I think it is very elegant. The real effect is that you have to consciously manipulate your action, and it won't accidentally emit the same keystroke flow (that's what my first version of code did).
You can use the analog values in the mouse library and joystick to control the cursor, scroll wheel, volume control or any other analog (ISH) function.Step 3: case, Part 1 - Design and cuttingThe bread board living on my desk just doesn't look cool and ergonomics are not ideal. It's time to design the case.
This will be an ideal project for 3D printing cases. I don't have a 3D printer, but I do have a laser cutting machine, so it looks like a laser cutting project now. This design took a night to design in Adobe Illustrator, including the use of many different concepts, such as simple rods, more organic shapes of hinges cut by laser, and square shapes.I began to put the bread board at different heights and angles, and decided that a 30 angle at a height of about 80 to 100 mm from the table was comfortable. The final design looks a bit like a small flight joystick, which feels very comfortable to hold.The original Adobe Illustrator files and DXF and PDF versions are listed below. (DXF and PDF have not been tested on the laser cutter.) the file also includes top and side views of the joystick for you to use when arranging your own project.
Two thicknesses of materials are used in this design. Everything except the top is 0.187 "practical" plywood from large local stores. A 2 'x 4' sheet is only about $8. The design uses 5mm as the thickness of. 187 "wood in the design, which is perfectly assembled. The top is 3mm plywood, which can provide additional clearance for the thumb grip on the joystick. This project also uses transparent acrylic resin.
Some notes on the benefits of prototyping: I first used cardboard for test cutting and assembly, which helped to find a design error. When I first cut the woodblock, I also found that the top plate was very fragile, so I redesigned the label to increase additional strength. I also found that the joystick touched the side of the case, so I made two modifications: I will It's better to move the bracket to the center position. I used 3mm wood instead of 5mm on the top. All these changes are included in the uploaded design file - just make sure the top is cut from the thinner wood.
Step 4: case, Part 2 - drawing and assemblyWith all the pieces cut, I made a final dry assembly and temporarily installed the joystick. Everything was fine, so I stuck all the pieces except the top. It was impossible to install the joystick after installing the top for later installation.The bottom right corner of the top will poke the bottom of my thumb, so I round it with the bottom four corners and polish it quickly.
If you like the laser cut look, or if you're made of acrylic, you're done! I want to use my desktop better. I painted it with a layer of black paint, and then painted it with a few layers of rust oleum forged hammered burned amber. I used this product on the decoration of the table, so it connects the various parts. I also like the metallic quality of this pigment I cover up the inside of the finger joint, the top fits, so the paint won't damage the fit.The lever and Arduino are connected with black wire and shrink tube to make it look clean, and the wire is cut to the correct length when installed.The lever is tightened on the center pillar. My screws are a little long, so I screw them through unused wood to shorten them and polish the tips with a bench sander. Arduino has no mounting holes, so it is hot glued in place.
After installing everything, I folded the top in place without bonding. It was tight enough to hold itself and was not structurally important.Step 5: completeThe completed project looks great on my desktop.