Wim Huiskamp
/
USBJoystick_HelloWorld
USB HID Device that emulates a Gamecontroller
The notebook page for this application is here
Diff: main.cpp
- Revision:
- 0:5037d4be5b6d
diff -r 000000000000 -r 5037d4be5b6d main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Jan 07 21:03:54 2012 +0000 @@ -0,0 +1,65 @@ +#include "mbed.h" +#include "USBMouse.h" +#include "USBJoystick.h" + +//USBMouse mouse; +USBJoystick joystick; + +// Variables for Heartbeat and Status monitoring +DigitalOut myled1(LED1); +DigitalOut myled2(LED2); +DigitalOut myled3(LED3); +DigitalOut heartbeatLED(LED4); + +Ticker heartbeat; +Serial pc(USBTX, USBRX); // tx, rx + +// Heartbeat monitor +void pulse() { + heartbeatLED = !heartbeatLED; +} + +void heartbeat_start() { + heartbeat.attach(&pulse, 0.5); +} + +void heartbeat_stop() { + heartbeat.detach(); +} + + +int main() { + int16_t i = 0; + int16_t throttle = 0; + int16_t rudder = 0; + int16_t x = 0; + int16_t y = 0; + int32_t radius = 120; + int32_t angle = 0; + int8_t button = 0; + int8_t hat = 0; + + pc.printf("Hello World!\n\r"); + + heartbeat_start(); + + while (1) { + // Basic Joystick + throttle = (i >> 8) & 0xFF; // value -127 .. 128 + rudder = (i >> 8) & 0xFF; // value -127 .. 128 + button = (i >> 8) & 0x0F; // value 0 .. 15, one bit per button +// hat = (i >> 8) & 0x03; // value 0, 1, 2, 3 or 4 for neutral + hat = (i >> 8) & 0x07; // value 0..7 or 8 for neutral + i++; + + x = cos((double)angle*3.14/180.0)*radius; // value -127 .. 128 + y = sin((double)angle*3.14/180.0)*radius; // value -127 .. 128 + angle += 3; + + joystick.update(throttle, rudder, x, y, button, hat); + + wait(0.001); + } + + pc.printf("Bye World!\n\r"); +} \ No newline at end of file