Library for 3.2'' uLcd Picaso Display4D system Picaso Serial Environment Command Set web: http://www.4dsystems.com.au/product/20/67/Processors_Graphics/PICASO/

Nunchuk.h

Committer:
adelino
Date:
2015-04-05
Revision:
1:a74e42cf52b2

File content as of revision 1:a74e42cf52b2:

#ifndef NUNCHUK_H
#define NUNCHUK_H

#include "mbed.h"

/** Class to interface with a Nintendo wii Nunchuk.
Exemple
@code
#include "mbed.h"
#include "Nunchuk.h"

Serial pc(USBTX,USBRX);
Nunchuk device(p28,p27,0.05);
int main()
{
while(1) {

 pc.printf("> :%d : %d : %d: %d \r\n",device.getJoyX(),device.getJoyY(),device.getAccX(),device.getBtnZ());

 wait(1);
        }
}
@endcode
 */

class Nunchuk
{

public:
    /** Construct a Nunchuk object.
        *
        * @param sda I2C channel to use.
        * @param scl I2C channel
        * @param mTe the sampling time for the internal Ticker
        * if @param mTe=0 start a new acquisition manually without internal Ticker
        */
    Nunchuk(PinName sda,PinName scl,float mTe=0);

    ~Nunchuk(void);

    /// start a new acquisition manually without internal Ticker
    void process(void);

    /// Get the joyStick position
    ///    @returns -1: joyStick in left position
    ///    @returns +1: joyStick in righ position
    ///    @returns 0: center position


    signed char getJoyX(void);

    //! Get the joyStick position
    //!   @returns -1: joyStick in left position
    //!   @returns +1: joyStick in righ position
    //!   @returns 0: center position

    signed char getJoyY(void);

    /** @returns The acceleration in axis X (10 bits)
    */
    int getAccX(void);

    /** @returns The acceleration in axis Y (10 bits)
    */
    int getAccY(void);

    /** @returns The acceleration in axis Z (10 bits)
    */
    int getAccZ(void);


    //! @returns true if button C pressed

    bool getBtnC(void);


    //! @returns true if button  Z pressed

    bool getBtnZ(void);

    /** @returns The sampling period
    */
    float getPeriodeTe(void);



protected:
    I2C myI2C;
    //
    Ticker myTicker;
    //
    bool setup(void);
    //
    bool request(void);
    //
    char decode(char data);
    //



//datas
    static const int ADRESSE=0xA4;
    signed char joyX;  //-1    0   +1
    signed char joyY;  //-1    0   +1

    int accX;
    int accY;
    int accZ;

    bool btnC;
    bool btnZ;

    float periodeTe;


};

#endif