ジャパンオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

setting/def.h

Committer:
lilac0112_1
Date:
2016-02-28
Revision:
1:3e013ae7900d
Parent:
0:ea35c18c85fc
Child:
2:635947de1583

File content as of revision 1:3e013ae7900d:

#ifndef _DEF_H_
#define _DEF_H_

//BT(BlueTooth)
#define DATA_NUM 8+2//2byte→KEYCODE(拝啓)とCHECKCODE(敬具) 8byte→やりとりするデータ
#define TX_KEYCODE 0xAA//あちらのKEYCODE
#define RX_KEYCODE 0xAA//こちらのKEYCODE
#define KEY 0//KEYCODEは配列の最初
#define CHECK DATA_NUM-1//CHECKCODEは配列の最後


//Switch 入力値
#define NONE    0
#define UP      1
#define DOWN    2
#define RIGHT   3
#define LEFT    4

//Lcd 設定値
#define BUFSIZE 10
#define STATE_NUM_X 0x04
#define STATE_NUM_Y 0x10
//繰り返し割り込み
#define DUTY_NUM 1

#define DUTY_SW     0
#define DUTY_GYRO   1
#define DUTY_PING   2
#define DUTY_COLOR  3
#define DUTY_MOUSE  4

/*PID処理*/
#define RATE    0.052//52
#define PID_BIAS    1.0
#define REFERENCE   180.0
#define MINIMUM     0.0
#define MAXIMUM     359.9
#define P_GAIN  1.3//1.25//0.8    //0.78   
#define I_GAIN  0.0     //0.0
#define D_GAIN  0.01//0.01  //0.009
#define OUT_LIMIT   30.0
#define MAX_POW     100
#define MIN_POW     -100
#define PID_CYCLE   0.05   //s

//ir 
#define IR_X 0
#define IR_Y 1
#define IR_SHORT 0
#define IR_LONG 1

#define X_AXIS 0
#define Y_AXIS 1


#define DIS_0 0x0//low_value
#define DIS_1 0x1
#define DIS_2 0x2
#define DIS_3 0x3
#define DIS_4 0x4
#define DIS_5 0x5
#define DIS_6 0x6
#define DIS_7 0x7//high_value

//ping
#define L_PING 0
#define R_PING 1
#define F_PING 2
#define B_PING 3

//0,1...main
//2,3...debug board

//line
#define A_SPOT 0
#define B_SPOT 1
#define C_SPOT 2
#define AB_SPOT 3

#define LINE_RF 5
#define LINE_DELAY 0.5

//思考パターン
#define STRATEGY_NUM 12

//計算
#define ROUND(x) ((x > 0) ? (x + 0.5) : (x - 0.5))//x...整数
#define PI  3.14159265358979323846
#define DEG2RAD(deg)  (PI*(deg)/180.0)
#define RAD2DEG(rad)  (180.0(rad)/PI)

//データ
/*
typedef struct {//ir,line,gyro,mouse,ping
    //ping
    uint8_t ping[4];
    //ir
    uint8_t irKey;
    uint8_t irNotice;
    uint8_t irSpot[2];
    uint8_t irPosition;
    uint8_t IrFlag;
    //line
    uint8_t lnFlag[3];
    uint8_t ball;
    uint8_t KickOffFlag;
    //uint8_t LineBind[4];//宣言すると動かない⇒構造体の限界
    uint8_t KickFlag;
    //motor 
    int32_t motorlog[2];
    uint8_t MotorFlag;
    double s_pow;
    double l_pow;
    //cmps&pid
    uint8_t PidFlag;
    double cmps, CmpsInitialValue, CmpsDiff, FrontDeg;//0<x<360
    double InputPID;//<<gyrosensor
    int16_t OutputPID;//>>motor
    uint8_t strategy;
    uint8_t init_point_flag;
    uint8_t stopflag;
} Record;
*/
//NewStruct
typedef struct {
    //cmps&pid
    double cmps, CmpsInitialValue, CmpsDiff, FrontDeg;//0<x<360
    double InputPID;//<<gyrosensor
    int16_t OutputPID;//>>motor
} CompassVal;
typedef struct {
    //ping
    uint8_t ping[4];
    //line
    uint8_t lineSpot[3];
    //ir(spi)
    uint8_t irKey;//2bit
    uint8_t irValPhase[2];//3*2bit
    uint8_t irSpot[2];//4*2bit
    //ir(playing)
    uint8_t irNotice;
    uint8_t irPosition;
    //ball
    uint8_t ball;
} SensorVal;
typedef struct {
    //line
    uint8_t lnFlag[3];
    uint8_t Flag[3];
    uint8_t Priority[3];
    uint8_t Bind[3];
} LineVal;
typedef struct {
    //system,flag
    uint8_t strategy;
    //uint8_t init_point_flag;
    uint8_t jump_flag;//0<=x<=STATE_NUM_Y
    uint8_t stopflag;
    uint8_t KickOffFlag;
    uint8_t DribbleFlag;
    uint8_t KickFlag;
    uint8_t MotorFlag;
    uint8_t IrFlag;
    uint8_t UswFlag;
    uint8_t UswFlag_2;
    uint8_t PidFlag;
    //motor 
    double s_pow;
    double l_pow;
    int8_t dri_pow;
} SystemVal;
#endif