One-Handed Adaptive Game Controller
by aidananselmo in Circuits > Assistive Tech
24 Views, 0 Favorites, 0 Comments
One-Handed Adaptive Game Controller
This adaptive controller is designed for someone with limited use of one arm. It uses a joystick, push button, microswitch, IR sensor, two LEDs, and a puff sensor to control a computer.
The IR sensor switches the controller between normal mode and combo mode. This allows the same physical inputs to activate different keyboard keys, giving the user more controls without adding more buttons. The puff sensor also recognizes both a single puff and a double puff.
Supplies
Materials
- Arduino Leonardo
- Joystick module
- Microswitch
- Small push button
- IR sensor module
- Puff sensor and tube
- Blue LED
- Green LED
- 2 resistors
- Perfboard
- Jumper wires
- Heat shrink tubing
- Solder
- 3D printed enclosure
- USB cable
Tools
- Soldering iron
- Wire cutters
- Wire strippers
- Heat gun or lighter for heat shrink
- Hot glue gun
- 3D printer
- Computer with Arduino IDE and Fusion 360
Print STL Files Below
Prepare the Perfboard
Use the perfboard as the main connection point between the Arduino and the controller components.
Plan separate connections for signal, power, and ground. Leave space between each solder connection so nearby wires do not touch. Add connector pins or wires along the edge of the board so each component can be connected later.
Install the LED Resistors
Place two resistors through separate holes in the perfboard. One resistor will be used for the blue LED, and the other will be used for the green LED.
Solder the resistors in place. Use wire on the back of the perfboard to connect each resistor to its correct path. Trim the extra resistor legs after the solder cools. Add heat shrink to wires.
Build the Perfboard Wiring Hub
Solder wires or connector pins onto the perfboard for each controller component.
Create connections for:
- Arduino power and ground
- Joystick
- Push button
- Microswitch
- IR sensor
- Puff sensor
- Blue LED
- Green LED
Create shared power and ground connections where needed. Bundle the longer wires together with tape so they stay organized during assembly.
Prepare the Microswitch
Locate the terminals labeled COM, NO, and NC on the microswitch.
Only use the COM and NO terminals. Solder one wire to COM and one wire to NO. Cover both solder joints with heat-shrink tubing to protect the exposed metal and strengthen the connections.
Prepare the Push Button
Solder one wire to each of the two used terminals on the push button.
The two wires will later connect to the Arduino signal connection and ground. Cover both solder joints with heat-shrink tubing.
Prepare the IR Sensor
Identify the IR sensor pins labeled VCC, GND, and OUT.
Solder one wire to each pin:
- VCC connects to 5V
- GND connects to ground
- OUT connects to Arduino pin D4
Cover all three connections with heat-shrink tubing.
Prepare the Joystick
Identify the joystick connections labeled GND, +5V, VRx, VRy, and SW.
Solder one wire to each connection. The current code uses GND, +5V, VRx, and VRy. The SW wire can be connected but is not used in the current code.
Cover the soldered connections with heat-shrink tubing.
Prepare the Puff Sensor
Solder one wire to each terminal of the puff sensor.
Cover the soldered connections with heat-shrink tubing. Attach the clear tube to the sensor so the user can activate it by puffing into the tube.
The Arduino code recognizes both a single puff and a double puff.
Install the Components Into the Printed Base
Place each component into its built-in mounting area inside the printed base.
Install:
- Joystick
- Microswitch
- Push button
- IR sensor
- Blue LED
- Green LED
- Puff sensor
Place the puff sensor inside the raised chamber and feed the clear tube through the top opening.
Use hot glue to secure each component in its assigned mounting area. Keep glue away from moving parts, sensor openings, and the joystick mechanism.
Connect Everything to the Arduino
Connect the perfboard and components to the Arduino Leonardo using the following pin map:
ComponentArduino Pin
Push button
D2
Microswitch
D3
IR sensor OUT
D4
Puff sensor
D5
Blue LED
D9
Green LED
D10
Joystick VRx
A0
Joystick VRy
A1
Power and Ground Connections
Connect the following parts to 5V:
- Joystick +5V
- IR sensor VCC
Connect the following parts to ground:
- Joystick GND
- IR sensor GND
- One side of the push button
- Microswitch COM
- One side of the puff sensor
- Blue LED ground
- Green LED ground
Make sure every component shares the same ground connection.
Upload the Arduino Code
Connect the Arduino Leonardo to the computer using a USB cable.
Open the Arduino IDE and select Arduino Leonardo as the board. Paste the controller code into the IDE and upload it.
Keep the joystick centered and make sure none of the inputs are activated during startup.
Test the Controller
Open an online keyboard tester and test each control separately.
Check the following:
- Move the joystick up, down, left, and right
- Press the push button
- Press the microswitch
- Perform a single puff
- Perform a double puff
- Activate the IR sensor
- Confirm both LEDs work
The blue LED should be on in normal mode. The green LED should be on in combo mode.
Controller Controls
Normal Mode
The blue LED is on, and the green LED is off.
Input
Keyboard Key
Joystick up
W
Joystick down
S
Joystick left
A
Joystick right
D
Push button
Space
Microswitch
Q
Single puff
C
Double puff
Z
Combo Mode
The green LED is on, and the blue LED is off.
Input
Keyboard Key
Joystick up
W
Joystick down
S
Joystick left
A
Joystick right
D
Push button
E
Microswitch
R
Single puff
F
Double puff
X
Activate the IR sensor to switch between normal mode and combo mode.
Remap the Controls
Open the Arduino code and find the keyboard commands assigned to each input.
Change the key inside a command such as:
Keyboard.write('e')
Replace the letter with the new keyboard key you want to use. Upload the edited code to the Arduino and test the new controls.
Organize the Wiring and Close the Controller
Place the Arduino, perfboard, and remaining wiring inside the larger section of the enclosure.
Organize the wires so they fit below the cover and do not pull on the components. Make sure no exposed wires are touching.
Place the printed cover over the base. Confirm that the joystick, switches, LEDs, IR sensor, and puff tube extend correctly through their openings.
Test the controller one final time after closing it.
Video Demonstration