ジャパンオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
Diff: setting/def.h
- Revision:
- 0:ea35c18c85fc
- Child:
- 1:3e013ae7900d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/setting/def.h Sat Feb 27 09:14:37 2016 +0000 @@ -0,0 +1,161 @@ +#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 + +//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 irValPhaseS;//3bit + uint8_t irValPhaseL;//3bit + 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 \ No newline at end of file