For many projects it would be cool to build a custom USB Joystick device, either as custom game controller for Windows or any USB host which can be used with a USB Joystick. Instead buying one, why not build my version? All what I need is a USB capable board, some kind of input (potentiometer, push buttons) and some software, and I have my USB Joystick:
The USB HID Joystick class is very similar to the USB Keyboard one, so follow the “Using the FRDM-KL25Z as USB Keyboard” tutorial for the basic USB setup.
Select the HID Joystick Device:
Then configure the HID device settings, especially the CPU/device used:
The component offers methods to set buttons, throttle, hat position and X/Y joystick position:
I have published on GitHub an example project which uses X/Y analog position, 4 hat switches, a throttle setting plus 3 push buttons:
The USB HID device shows up with two devices in the Windows device manager:
Inside the Windows Control Panel, there is a dialog to set up any USB game controller:
That dialog shows the controls and is used to calibrate them:
Building a DIY game controller is easy with the addition of the USB HID Joystick component and software. With a USB capable device and a joystick shield I’m able to create my gaming controller.
Happy Gaming 🙂
USB and Using Freescale USB Stack withKinetis L devices: https://cache.freescale.com/files/32bit/doc/app_note/AN4748.pdf
- Tutorial about USB HID Device descriptor: http://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/
- Creating a USB keyboard device: https://mcuoneclipse.com/2013/06/30/using-the-frdm-kl25z-as-usb-keyboard/
- McuOnEclipse components on SourceForge: https://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/
- Example project on GitHub: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/KDS/FRDM-KL25Z/FRDM-KL25Z_USB_HID_Joystick