One-Handed Adaptive Game Controller

by aidananselmo in Circuits > Assistive Tech

24 Views, 0 Favorites, 0 Comments

One-Handed Adaptive Game Controller

IMG_9695.JPG
IMG_9557.JPG

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

  1. Arduino Leonardo
  2. Joystick module
  3. Microswitch
  4. Small push button
  5. IR sensor module
  6. Puff sensor and tube
  7. Blue LED
  8. Green LED
  9. 2 resistors
  10. Perfboard
  11. Jumper wires
  12. Heat shrink tubing
  13. Solder
  14. 3D printed enclosure
  15. USB cable

Tools

  1. Soldering iron
  2. Wire cutters
  3. Wire strippers
  4. Heat gun or lighter for heat shrink
  5. Hot glue gun
  6. 3D printer
  7. Computer with Arduino IDE and Fusion 360


Arduino Code


Print STL Files Below

Prepare the Perfboard

IMG_9025.JPG
IMG_9036.JPG

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

IMG_9135.JPG
IMG_9185.JPG

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

IMG_9134.JPG
IMG_9550.JPG

Solder wires or connector pins onto the perfboard for each controller component.

Create connections for:

  1. Arduino power and ground
  2. Joystick
  3. Push button
  4. Microswitch
  5. IR sensor
  6. Puff sensor
  7. Blue LED
  8. 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

IMG_9245.JPG
IMG_9246.JPG

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

IMG_9384.JPG
IMG_9385.JPG

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

IMG_9382.JPG
IMG_9383.JPG

Identify the IR sensor pins labeled VCC, GND, and OUT.

Solder one wire to each pin:

  1. VCC connects to 5V
  2. GND connects to ground
  3. OUT connects to Arduino pin D4

Cover all three connections with heat-shrink tubing.

Prepare the Joystick

IMG_9386.JPG
IMG_9387.JPG

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

IMG_9388.JPG
IMG_9390.JPG

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

IMG_9549.JPG
IMG_9557.JPG

Place each component into its built-in mounting area inside the printed base.

Install:

  1. Joystick
  2. Microswitch
  3. Push button
  4. IR sensor
  5. Blue LED
  6. Green LED
  7. 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

IMG_9550.JPG
IMG_9675.JPG

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:

  1. Joystick +5V
  2. IR sensor VCC

Connect the following parts to ground:

  1. Joystick GND
  2. IR sensor GND
  3. One side of the push button
  4. Microswitch COM
  5. One side of the puff sensor
  6. Blue LED ground
  7. Green LED ground

Make sure every component shares the same ground connection.

Upload the Arduino Code

Screenshot 2026-06-04 at 8.55.22 PM.png

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.


Arduino Code

Test the Controller

IMG_9695.JPG

Open an online keyboard tester and test each control separately.

Check the following:

  1. Move the joystick up, down, left, and right
  2. Press the push button
  3. Press the microswitch
  4. Perform a single puff
  5. Perform a double puff
  6. Activate the IR sensor
  7. 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

IMG_9675.JPG
IMG_9695.JPG

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

Controller Demonstration