Xbox 360 Wireless Controller for Windows library
Dependencies: USBHost USBHostXpad mbed
Fork of USBHostMSD_HelloWorld by
Xbox 360 Wireless Controller for Windows
Microsoftの XBOX 360 ワイヤレスコントローラーを、パソコン用のUSB接続型レシーバーで mbed に接続して使えるライブラリです。
ワイヤードのXBOX360コントローラーや、初代XBOXコントローラーのコードも含んでいますが未確認です。
USB Host 機能を使いますので mbed LPC1768 専用です。
たまに usb_thread could not read dev descr を出力して処理が停止する不具合があります。
Import libraryUSBHostXpad
Xbox 360 Wireless Controller for Windows library. sample: http://mbed.org/users/okini3939/code/USBHostXpad_HelloWorld/
main.cpp
- Committer:
- okini3939
- Date:
- 2014-02-01
- Revision:
- 12:f6d7bcc93e97
- Parent:
- 11:f76e120a8520
File content as of revision 12:f6d7bcc93e97:
#include "mbed.h" #include "USBHostXpad.h" Serial pc(USBTX, USBRX); DigitalOut led(LED1); volatile int poll = 0; void onXpadEvent (int buttons, int stick_lx, int stick_ly, int stick_rx, int stick_ry, int trigger_l, int trigger_r) { std::printf("Xpad: %04x %-5d %-5d %-5d %-5d %02x %02x\r\n", buttons, stick_lx, stick_ly, stick_rx, stick_ry, trigger_l, trigger_r); poll = 0; } void xpad_task(void const *) { USBHostXpad xpad; while(1) { // try to connect a Xbox 360 Wireless Controller while(!xpad.connect()) Thread::wait(500); // when connected, attach handler called on xpad event xpad.attachEvent(onXpadEvent); xpad.led(USBHostXpad::LED_ROTATE); Thread::wait(500); xpad.rumble(0xff, 0); Thread::wait(500); xpad.rumble(0, 0xff); Thread::wait(500); xpad.rumble(0, 0); Thread::wait(500); xpad.led(USBHostXpad::LED1_ON); // wait until the mouse is disconnected while(xpad.connected()) { Thread::wait(500); poll ++; if (poll > 10) { xpad.restart(); poll = 0; } } } } int main() { pc.baud(115200); pc.printf("----------\r\n"); Thread xpadTask(xpad_task, NULL, osPriorityNormal, 1024 * 4); while(1) { led=!led; Thread::wait(500); } }