Joystick

With provided code (complete of source) and schematics of the Joystick BitPack your ORbit16 becomes a fully functional Joystick/Gamepad with following features:

  • Is recognized by pc as a common HID Joystick
  • Additional UART data input/output (57600,n,8,1) for use the joystick with your robot!
  • 2 analog axis
  • 8 pushbuttons
  • reset button
  • led
Provided code gives also some useful examples:
  • how to enable pullup resistors on digital inputs (CNx pins)
  • how to read 2 analog inputs and make the average on 8 readings
  • how to translate analog reading (0-1023) to values 0-255 required by joystick
  • how to mix HID USB code with UART
ORbit16 can be programmed using bootloader with this BitPack mounted on, since on the board there is the reset button and the switch S7 is parallel with S2 on the ORbit16 board.
Board is single-sided, only 2 bridges on top are required, so is very easy to make the Joystick BitPack at home!

Bill of Material

  • 1x thumb joystick (you can buy it from Sparkfun or Robot-Italy)
  • 4x tactile switch 12x12mm (you can buy them from Sparkfun or Robot-Italy)
  • 4x tactile switch 6x6mm
  • 1x led 3mm
  • 2x 20-pin male header
  • 1x 330Ω resistor ¼W
  • 1x 560Ω resistor ¼W
  • optional 4-pin male header or 4-pin polarized connector for UART connection (Sparkfun or Robot-Italy)

How does it works

When you connect the ORbit16™ with Joystick firmware loaded and Joystick BitPack mounted on, is recognized by pc as a common HID Joystick so you can use it for play with your games (Here is a video showing Joystick BitPack  usage with M.A.M.E.).
Additionally, the header named JP1 reports GND, +3.3V and UART RX/TX. Using the joystick on UART TX (57600,n,8,1) you can read the joystick values:
X:127 Y:127 B:128
X is the value for analog X-axis (≈127: center, >127:right, <127:left). Y is the value of analog Y-axis (≈127: center, >127:down, <127:up). B is the value of pushbuttons. Each pressed button has a bit in an 8-bit value: S1 is on BIT0 (value:1), S2 is on BIT1 (value:2) and so on up to S8 – BIT7 (value:128). If B=129 so S8 and S1 are pressed.
USB and UART works simultaneosly so you can use only one firmware for use your ORbit16™ Joystick with the PC or to control your robot!
The joystick has a pushbutton that is activated by pressing down the stick, this button is S8.

Following video shows how does Joystick BitPack works

On the top is a software used for joystick testing, on the bottom is HyperTerminal.

Download

Download includes PDFs of the board, source code with MPLAB project and compiled HEX. Code for PIC24FJ64GB002. Joystick BitPack to be mounted as shown in the photo above.

Joystick Demo (150 downloads)

Leave a Reply