Home > WiiRemote_on_Arduino

WiiRemote_on_Arduino

WiiRemote_on_Arduino is a project mainly written in C++ and C, it's free.

Wii Remote, Arduino, USB Host Shield, Circuit at home

This is Arduino library for WiiRemote Bluetooth stack which supports minimum HCI and L2CAP layer for HID profile.

== First of all == This program is based on which is developed by Richard Ibbotson. This program also needs MAX3421E and USB libraries for Arduino written by Oleg Mazurov. The source codes can be grabbed from https://github.com/felis/USB_Host_Shield.

== Hardware Requirement ==

  • Arduino
  • USB Host Shield
  • USB Bluetooth Device

== Software Requirement ==

  • MAX3421E and USB library for Arduino written by Oleg Mazurov

== GNU GPL == WiiRemote Bluetooth stack on Arduino with USB Host Shield Copyright (C) 2010 Tomo Tanaka

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

== Files == WiiRemote/ +- WiiRemote.h +- WiiRemote.cpp +- keywords.txt +- Max3421e_constants.h // written by Oleg +- Max3421e.h // written by Oleg +- Max3421e.cpp // written by Oleg +- ch9.h // written by Oleg +- Usb.h // written by Oleg +- Usb.cpp // written by Oleg
    +- examples/
        +- SteeringWii/
            +- SteeringWii.pde

== Usage ==

=== Modify USB Device Descriptors === The values of CSR_VID and CSR_PID described in WiiRemote.h need to be modified to match descriptors of USB Bluetooth Device to be used.

== WiiRemote Class ==

=== Methods ===

  • void init(void)

  • void task(void (*pFunc)(void))

  • uint8_t getStatus(void) This returns unsigned int as the status of USB Bluetooth Device and WiiRemote connection. Bit field shows as follows: bit 0: WIIREMOTE_STATE_USB_AUTHORIZED USB BT Device is authorized as the library expects. bit 1: WIIREMOTE_STATE_USB_CONFIGURED USB BT Device is plugged into the USB port on the Shield. bit 2: WIIREMOTE_STATE_CONNECTED WiiRemote has been connected to USB BT Device. bit 3: WIIREMOTE_STATE_RUNNING WiiRemote has been established L2CAP connection.

  • void setBDAddress(uint8_t *bdaddr, int size)

  • void setBDAddressMode(eBDAddressMode mode) This selects how to acquire BD_ADDR to establish HCI connection. The mode can be set: BD_ADDR_FIXED: Use specified BD_ADDR set by setBDAddress(). BD_ADDR_INQUIRY: Discover BD_ADDR of WiiRemote to be connected.

  • void getBDAddress(uint8_t *bdaddr, int size)

  • uint8_t setLED(uint8_t led) This turns on/off LEDs of WiiRemote. setLED(0x0) turns off all LEDs, setLED(0x10) turns on LED1 and setLED(0xf0) turns o all LEDs. These enum can be used: WIIREMOTE_LED1 = 0x10, WIIREMOTE_LED2 = 0x20, WIIREMOTE_LED3 = 0x40, WIIREMOTE_LED4 = 0x80,

  • bool buttonPressed(uint16_t button) This returns the state of WiiRemote button specified in the call. True if the button pressed. Buttons are: WIIREMOTE_LEFT = 0x0001, WIIREMOTE_RIGHT = 0x0002, WIIREMOTE_DOWN = 0x0004, WIIREMOTE_UP = 0x0008, WIIREMOTE_PLUS = 0x0010, WIIREMOTE_TWO = 0x0100, WIIREMOTE_ONE = 0x0200, WIIREMOTE_B = 0x0400, WIIREMOTE_A = 0x0800, WIIREMOTE_MINUS = 0x1000, WIIREMOTE_HOME = 0x8000,

  • bool buttonClicked(uint16_t button) This checkes whether a specified WiiRemote button is clicked. True if the button clicked. Buttons are the same as above.

=== Member Variables ===

  • Report_t Report

== Hint == Hints from PS3 and Wiimote game controllers thread in Circuit@Home.

  • Bluetooth 1.x seems not work on this library.

== ACKNOWLEDGEMENT == I appreciate the gread codes developed by Richard and Oleg :-)

Previous:demo_app