4 Axis Game Controller

About

A 3D game controller and mouse personal project to create an alternative game controller that is more tactile and engaging.

The design was inspired by a delta robot, with the controller keeping its two bases parallel while being able to know the top platform's x, y, z, and rotation position because of potentiometers at each of rotation joint. These values can than be used as feedback for a computer in games or as a normal mouse.

User movements affects the position of the controller, which is then read by potentiometers. This data is then read by an Arduino Uno to calculate the x, y, z, and rotation position. Serial connection between Python and Arduino to move this information to the computer. Based on the chosen control scheme a Python program will then either mimic keystrokes or move the mouse pointer accordingly.

Using this, nearly any classic arcade game can be played. Notable ones played have been Bomberman, Wolfenstein, and Star Fox. A seperate python script could switch it to act as a single button mouse.

My goal going forward with the project is to add a fifth axis in the form of tilt, allow for a greater number of inputs, and adapt it to more games.

Skills

  • Python - Script to read potentiometer data from the Arduino and convert it to mouse movements or keypresses.
  • Arduino - Potentiometer and button presses are monitored by an Arduino and sent via serial to a laptop.
  • Iteration - Multiple iterations were developed and changed based on user feedback.
  • User Oriented Design - The goal was to create a more tactile controller for gamers who sought a more involved gaming experience. User testing with a small number of users (fellow students), implementing changes based on feedback.
  • 3D Printing - All non electrical parts were 3D printed from PLA on a Prusa i3 Mk2.
  • Solidworks - The controller was CADed fully in Solidworks. Inspired by James Burton.

Movement of the controller

Norway

Finished Product


Norway

CAD of the controller


Norway

First iteration with triangular base