Dependents:   WiiNunchuckTest

Committer:
FrankWeissenborn
Date:
Mon Feb 28 06:49:27 2011 +0000
Revision:
4:9169c602b0d8
Parent:
2:5737b6a16054

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FrankWeissenborn 4:9169c602b0d8 1 /* mbed audio player
FrankWeissenborn 4:9169c602b0d8 2 * Copyright (c) 2010, 2011 Frank Weissenborn
FrankWeissenborn 4:9169c602b0d8 3 *
FrankWeissenborn 4:9169c602b0d8 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
FrankWeissenborn 4:9169c602b0d8 5 * of this software and associated documentation files (the "Software"), to deal
FrankWeissenborn 4:9169c602b0d8 6 * in the Software without restriction, including without limitation the rights
FrankWeissenborn 4:9169c602b0d8 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
FrankWeissenborn 4:9169c602b0d8 8 * copies of the Software, and to permit persons to whom the Software is
FrankWeissenborn 4:9169c602b0d8 9 * furnished to do so, subject to the following conditions:
FrankWeissenborn 4:9169c602b0d8 10 *
FrankWeissenborn 4:9169c602b0d8 11 * The above copyright notice and this permission notice shall be included in
FrankWeissenborn 4:9169c602b0d8 12 * all copies or substantial portions of the Software.
FrankWeissenborn 4:9169c602b0d8 13 *
FrankWeissenborn 4:9169c602b0d8 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
FrankWeissenborn 4:9169c602b0d8 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FrankWeissenborn 4:9169c602b0d8 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
FrankWeissenborn 4:9169c602b0d8 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
FrankWeissenborn 4:9169c602b0d8 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
FrankWeissenborn 4:9169c602b0d8 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
FrankWeissenborn 4:9169c602b0d8 20 * THE SOFTWARE.
FrankWeissenborn 4:9169c602b0d8 21 *
FrankWeissenborn 4:9169c602b0d8 22 /* This code based on:
FrankWeissenborn 4:9169c602b0d8 23 * Wii Nunchuck
FrankWeissenborn 4:9169c602b0d8 24 * http://mbed.org/users/knaka/libraries/WiiNunchuck/ljkynp
FrankWeissenborn 4:9169c602b0d8 25 * 2010-12-18
FrankWeissenborn 4:9169c602b0d8 26 */
FrankWeissenborn 4:9169c602b0d8 27
FrankWeissenborn 0:f442b7eb68b0 28 #ifndef __WIICHUCK_H
FrankWeissenborn 0:f442b7eb68b0 29 #define __WIICHUCK_H
FrankWeissenborn 0:f442b7eb68b0 30
FrankWeissenborn 0:f442b7eb68b0 31 #include "mbed.h"
FrankWeissenborn 0:f442b7eb68b0 32
FrankWeissenborn 0:f442b7eb68b0 33 #define NUNCHUCK_ADDR 0xA4 // 0x52 << 1
FrankWeissenborn 0:f442b7eb68b0 34 #define NUNCHUCK_REGADDR 0x40 //
FrankWeissenborn 0:f442b7eb68b0 35 #define NUNCHUCK_READLEN 0x06 //
FrankWeissenborn 0:f442b7eb68b0 36 #define I2C_ACK 0
FrankWeissenborn 0:f442b7eb68b0 37 #define I2C_READ_DELAY 0.01
FrankWeissenborn 0:f442b7eb68b0 38
FrankWeissenborn 0:f442b7eb68b0 39 #define Joy_X 0
FrankWeissenborn 0:f442b7eb68b0 40 #define Joy_Y 1
FrankWeissenborn 0:f442b7eb68b0 41 #define Acc_X 2
FrankWeissenborn 0:f442b7eb68b0 42 #define Acc_Y 3
FrankWeissenborn 0:f442b7eb68b0 43 #define Acc_Z 4
FrankWeissenborn 0:f442b7eb68b0 44 #define Button 5
FrankWeissenborn 0:f442b7eb68b0 45
FrankWeissenborn 1:f04b559e06b3 46 // ----------------------------------------------------------------------------
FrankWeissenborn 1:f04b559e06b3 47 // Control values
FrankWeissenborn 1:f04b559e06b3 48 // ----------------------------------------------------------------------------
FrankWeissenborn 1:f04b559e06b3 49 #define BUTTON_PREV_VALUE '1'
FrankWeissenborn 1:f04b559e06b3 50 #define BUTTON_NEXT_VALUE '2'
FrankWeissenborn 1:f04b559e06b3 51 #define BUTTON_OK_VALUE '3'
FrankWeissenborn 1:f04b559e06b3 52 #define BUTTON_CANCEL_VALUE '4'
FrankWeissenborn 1:f04b559e06b3 53 #define BUTTON_RESET_VALUE 'r'
FrankWeissenborn 1:f04b559e06b3 54 #define BUTTON_VOLUME_PLUS '+'
FrankWeissenborn 1:f04b559e06b3 55 #define BUTTON_VOLUME_MINUS '-'
FrankWeissenborn 1:f04b559e06b3 56
FrankWeissenborn 2:5737b6a16054 57 typedef void(*pt2Func)(int);
FrankWeissenborn 1:f04b559e06b3 58
FrankWeissenborn 0:f442b7eb68b0 59 class WiiChuck {
FrankWeissenborn 0:f442b7eb68b0 60 public:
FrankWeissenborn 0:f442b7eb68b0 61 bool Error;
FrankWeissenborn 0:f442b7eb68b0 62 WiiChuck(PinName data, PinName clk);
FrankWeissenborn 0:f442b7eb68b0 63 bool Read(int* joyX,int* joyY,int* accX,int* accY,int* accZ,int* buttonC,int* buttonZ);
FrankWeissenborn 1:f04b559e06b3 64 void start();
FrankWeissenborn 1:f04b559e06b3 65 void stop();
FrankWeissenborn 1:f04b559e06b3 66 void attach(pt2Func function);
FrankWeissenborn 0:f442b7eb68b0 67 private:
FrankWeissenborn 0:f442b7eb68b0 68 I2C _i2c;
FrankWeissenborn 1:f04b559e06b3 69 pt2Func _callback_input;
FrankWeissenborn 1:f04b559e06b3 70 Ticker _getValues;
FrankWeissenborn 1:f04b559e06b3 71 void getValues();
FrankWeissenborn 1:f04b559e06b3 72 int _oldC;
FrankWeissenborn 1:f04b559e06b3 73 int _oldZ;
FrankWeissenborn 0:f442b7eb68b0 74
FrankWeissenborn 0:f442b7eb68b0 75
FrankWeissenborn 0:f442b7eb68b0 76 };
FrankWeissenborn 0:f442b7eb68b0 77
FrankWeissenborn 0:f442b7eb68b0 78 #endif