NHK2017Ateamかにろぼ

Dependencies:   2017NHKpin_config mbed FEP HMC6352 MotorDriverController PID QEI omni

classDiagram

    \ ̄\                   / ̄/ 
/l     \  \             /  / lヽ  
| ヽ  ヽ   |           |  /  / | 
\ ` ‐ヽ  ヽ  ●        ●         /  / ‐  / 
  \ __ l  |  ||___|| /  l __ / 
     \  \ /      \/ 
      /\|   人__人  |/\       
    //\|             |/\\     
    //\|             |/\\     
    /     . \_____/         \ 

                               ┏┓        ┏━┓┏┓              
     ┏┓         ┏┓┏┓   ┏┓    ┏┓┗┛     ┏┓ ┗┓┃┗┛              
┏┛┗━┓  ┃┃┃┃    ┃┃┏━┛┗┓┏┓┏┛┗━┓┃┃┏┓┏┓┏━━━┓ 
┗┓┏━┛  ┃┃┗┛    ┃┃┗━┓┏┛┗┛┗┓┏┓┃┗┛┗┛┃┃┗━━━┛    
┏┛┃┏━┓┃┗━━┓┃┃┏━┛┗┓      ┏┛┃┃┃        ┃┃              
┃┏┛┗━┛┗━━┓┃┃┃┃┏┓┏┛      ┗━┛┃┃        ┃┃┏┓          
┃┃┏━━┓┏━━┛┃┃┃┃┗┛┃         ┏┛┃        ┃┃┃┗━━┓    
┗┛┗━━┛┗━━━┛┗┛┗━━┛         ┗━┛        ┗┛┗━━━┛  

bot/controller/controller.h

Committer:
uchitake
Date:
2017-09-04
Revision:
21:b2c1d73b0ee9
Parent:
19:3a62cbc6fee9
Child:
22:bb6afe7332c3

File content as of revision 21:b2c1d73b0ee9:

/**
* @file controller.h
* @brief FEPを使ったコントローラ受信部
*
* Example :
* @code
* #include "mbed.h"
* #include "controller.h"
*
* Controller pad(PA_9, PA_10, 200);
* Serial pc(USBTX, USBRX, 115200);
*
* int main()
* {
*     while(1) {
*         if(pad.receiveState()) {
*             for(int i = 0; i < 7; i++) pc.printf("%d, ", pad.getButton1(i));
*             for(int i = 0; i < 6; i++) pc.printf("%d, ", pad.getButton2(i));
*             pc.printf("\r\n");
*         } else {
*             pc.printf("ERROR\n\r");
*         }
*     }
* }
* @endcode
*/
#ifndef CONTROLLER_H
#define CONTROLLER_H

#include "mbed.h"
#include "pin_config.h"
#include <math.h>

#include "FEP.h"

#define M_PI 3.141592653589793
#define ADDR 203
#define FEP_SUCCESS 0
#define DATA_SIZE 6
#define STICK_DIVIDE 255.0
#define STICK_NEWTRAL 0.1
#define STICK_NORM_MAX 1.0

/**
* @brief FEPを使ったコントローラのクラス
*/
class Controller : public FEP
{
public :

    /**
    * @brief コンストラクタ
    */
    Controller();

    /**
     * @brief コンストラクタ
     * @param FEPtx FEPtx
     * @param FEPrx FEPrx
     * @param addr  address
     */
    Controller(PinName FEPtx, PinName FEPrx,int addr);

    /**
    * @brief メンバ変数にボタンのステートを格納
    */
    bool receiveState();

    /**
     * ボタン1の状態を取得
     * @param  number button number
     * @return        status
     */
    bool getButton1(int number);

    /**
     * ボタン2の状態を取得
     * @param  number button number
     * @return        status
     */
    bool getButton2(int number);

    /**
     * スティックの値を取得
     * @param  number sticknumber(x, y, x, y)
     * @return        stick value
     */
    float getStick(int number);

    /**
     * スチィックの角度を取得
     * @param  number left...0 right...1
     * @return        radian
     */
    float getRadian(int number);

    /**
     * スティックの距離を取得
     * @param  number left..0 right..1
     * @return        norm
     */
    float getNorm(int number);

private :
    void setStick();

    char data[6];
    uint8_t fepTemp;

protected :
    bool button1[7];
    bool button2[6];
    double stick[4];
    double radian[2];
    double norm[2];
};

#endif//CONTROLLER_H