Electrical Engineering - Computer Vision Enthusiast
Game Controller | |
---|---|
![]() | |
Date | September 2019 - December 2019 |
Language | C, Python |
Board | Texas Instruments Piccolo F28027 |
Program | Code Composer Studio, PyCharm |
Peripherals | N/A |
Github | Joystick-Project |
Utilizing sys/bios, Texas Instrument’s real-time operating system or RTOS, we aim to create an arcade stick to control any computer game by emulating the X-input standard used across all Windows-based video games.
In essence, the C2000 will read inputs from our 3D-printed arcade stick and then prepare the data to be sent over the USB-UART connection the C2000 normally uses to communicate with Code Composer Studio. Once the data is received by the computer though a COM port, a python script will capture and decode the data over to the X-input standard, which can easily be interpreted by any modern video game on the windows platform.
The arcade stick consists of 12 buttons, eight face buttons and four directional buttons in the joystick. Beside the controller is an analog joystick that is sampled by the ADC. These data are arranged in a specific order fitting our control protocol before being sent out via serial communication to the PC.
The PC runs our custom Serial to Joystick program to parse the inputs as button commands. We utilized the vJoy API to interface with Windows. Under this API we convert our button commands into X-Input commands understood by games in Windows.
In the following figure you can that as I push the button on our controller, the frame on the screen is changing which would indicate that our device’s input delay is lower than the speed at which the monitor refreshes its contents. This is expected, as the monitor is refreshing at 60Hz and our design is polling at 100Hz.