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

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Sun Feb 28 06:38:17 2016 +0000
Revision:
1:3e013ae7900d
Parent:
0:ea35c18c85fc
Child:
2:635947de1583
modified ir format.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:ea35c18c85fc 1 #ifndef _DEF_H_
lilac0112_1 0:ea35c18c85fc 2 #define _DEF_H_
lilac0112_1 0:ea35c18c85fc 3
lilac0112_1 0:ea35c18c85fc 4 //BT(BlueTooth)
lilac0112_1 0:ea35c18c85fc 5 #define DATA_NUM 8+2//2byte→KEYCODE(拝啓)とCHECKCODE(敬具) 8byte→やりとりするデータ
lilac0112_1 0:ea35c18c85fc 6 #define TX_KEYCODE 0xAA//あちらのKEYCODE
lilac0112_1 0:ea35c18c85fc 7 #define RX_KEYCODE 0xAA//こちらのKEYCODE
lilac0112_1 0:ea35c18c85fc 8 #define KEY 0//KEYCODEは配列の最初
lilac0112_1 0:ea35c18c85fc 9 #define CHECK DATA_NUM-1//CHECKCODEは配列の最後
lilac0112_1 0:ea35c18c85fc 10
lilac0112_1 0:ea35c18c85fc 11
lilac0112_1 0:ea35c18c85fc 12 //Switch 入力値
lilac0112_1 0:ea35c18c85fc 13 #define NONE 0
lilac0112_1 0:ea35c18c85fc 14 #define UP 1
lilac0112_1 0:ea35c18c85fc 15 #define DOWN 2
lilac0112_1 0:ea35c18c85fc 16 #define RIGHT 3
lilac0112_1 0:ea35c18c85fc 17 #define LEFT 4
lilac0112_1 0:ea35c18c85fc 18
lilac0112_1 0:ea35c18c85fc 19 //Lcd 設定値
lilac0112_1 0:ea35c18c85fc 20 #define BUFSIZE 10
lilac0112_1 0:ea35c18c85fc 21 #define STATE_NUM_X 0x04
lilac0112_1 0:ea35c18c85fc 22 #define STATE_NUM_Y 0x10
lilac0112_1 0:ea35c18c85fc 23 //繰り返し割り込み
lilac0112_1 0:ea35c18c85fc 24 #define DUTY_NUM 1
lilac0112_1 0:ea35c18c85fc 25
lilac0112_1 0:ea35c18c85fc 26 #define DUTY_SW 0
lilac0112_1 0:ea35c18c85fc 27 #define DUTY_GYRO 1
lilac0112_1 0:ea35c18c85fc 28 #define DUTY_PING 2
lilac0112_1 0:ea35c18c85fc 29 #define DUTY_COLOR 3
lilac0112_1 0:ea35c18c85fc 30 #define DUTY_MOUSE 4
lilac0112_1 0:ea35c18c85fc 31
lilac0112_1 0:ea35c18c85fc 32 /*PID処理*/
lilac0112_1 0:ea35c18c85fc 33 #define RATE 0.052//52
lilac0112_1 0:ea35c18c85fc 34 #define PID_BIAS 1.0
lilac0112_1 0:ea35c18c85fc 35 #define REFERENCE 180.0
lilac0112_1 0:ea35c18c85fc 36 #define MINIMUM 0.0
lilac0112_1 0:ea35c18c85fc 37 #define MAXIMUM 359.9
lilac0112_1 0:ea35c18c85fc 38 #define P_GAIN 1.3//1.25//0.8 //0.78
lilac0112_1 0:ea35c18c85fc 39 #define I_GAIN 0.0 //0.0
lilac0112_1 0:ea35c18c85fc 40 #define D_GAIN 0.01//0.01 //0.009
lilac0112_1 0:ea35c18c85fc 41 #define OUT_LIMIT 30.0
lilac0112_1 0:ea35c18c85fc 42 #define MAX_POW 100
lilac0112_1 0:ea35c18c85fc 43 #define MIN_POW -100
lilac0112_1 0:ea35c18c85fc 44 #define PID_CYCLE 0.05 //s
lilac0112_1 0:ea35c18c85fc 45
lilac0112_1 0:ea35c18c85fc 46 //ir
lilac0112_1 0:ea35c18c85fc 47 #define IR_X 0
lilac0112_1 0:ea35c18c85fc 48 #define IR_Y 1
lilac0112_1 0:ea35c18c85fc 49 #define IR_SHORT 0
lilac0112_1 0:ea35c18c85fc 50 #define IR_LONG 1
lilac0112_1 0:ea35c18c85fc 51
lilac0112_1 0:ea35c18c85fc 52 #define X_AXIS 0
lilac0112_1 0:ea35c18c85fc 53 #define Y_AXIS 1
lilac0112_1 0:ea35c18c85fc 54
lilac0112_1 1:3e013ae7900d 55
lilac0112_1 1:3e013ae7900d 56 #define DIS_0 0x0//low_value
lilac0112_1 1:3e013ae7900d 57 #define DIS_1 0x1
lilac0112_1 1:3e013ae7900d 58 #define DIS_2 0x2
lilac0112_1 1:3e013ae7900d 59 #define DIS_3 0x3
lilac0112_1 1:3e013ae7900d 60 #define DIS_4 0x4
lilac0112_1 1:3e013ae7900d 61 #define DIS_5 0x5
lilac0112_1 1:3e013ae7900d 62 #define DIS_6 0x6
lilac0112_1 1:3e013ae7900d 63 #define DIS_7 0x7//high_value
lilac0112_1 1:3e013ae7900d 64
lilac0112_1 0:ea35c18c85fc 65 //ping
lilac0112_1 0:ea35c18c85fc 66 #define L_PING 0
lilac0112_1 0:ea35c18c85fc 67 #define R_PING 1
lilac0112_1 0:ea35c18c85fc 68 #define F_PING 2
lilac0112_1 0:ea35c18c85fc 69 #define B_PING 3
lilac0112_1 0:ea35c18c85fc 70
lilac0112_1 0:ea35c18c85fc 71 //0,1...main
lilac0112_1 0:ea35c18c85fc 72 //2,3...debug board
lilac0112_1 0:ea35c18c85fc 73
lilac0112_1 0:ea35c18c85fc 74 //line
lilac0112_1 0:ea35c18c85fc 75 #define A_SPOT 0
lilac0112_1 0:ea35c18c85fc 76 #define B_SPOT 1
lilac0112_1 0:ea35c18c85fc 77 #define C_SPOT 2
lilac0112_1 0:ea35c18c85fc 78 #define AB_SPOT 3
lilac0112_1 0:ea35c18c85fc 79
lilac0112_1 0:ea35c18c85fc 80 #define LINE_RF 5
lilac0112_1 0:ea35c18c85fc 81 #define LINE_DELAY 0.5
lilac0112_1 0:ea35c18c85fc 82
lilac0112_1 0:ea35c18c85fc 83 //思考パターン
lilac0112_1 0:ea35c18c85fc 84 #define STRATEGY_NUM 12
lilac0112_1 0:ea35c18c85fc 85
lilac0112_1 0:ea35c18c85fc 86 //計算
lilac0112_1 0:ea35c18c85fc 87 #define ROUND(x) ((x > 0) ? (x + 0.5) : (x - 0.5))//x...整数
lilac0112_1 0:ea35c18c85fc 88 #define PI 3.14159265358979323846
lilac0112_1 0:ea35c18c85fc 89 #define DEG2RAD(deg) (PI*(deg)/180.0)
lilac0112_1 0:ea35c18c85fc 90 #define RAD2DEG(rad) (180.0(rad)/PI)
lilac0112_1 0:ea35c18c85fc 91
lilac0112_1 0:ea35c18c85fc 92 //データ
lilac0112_1 1:3e013ae7900d 93 /*
lilac0112_1 0:ea35c18c85fc 94 typedef struct {//ir,line,gyro,mouse,ping
lilac0112_1 0:ea35c18c85fc 95 //ping
lilac0112_1 0:ea35c18c85fc 96 uint8_t ping[4];
lilac0112_1 0:ea35c18c85fc 97 //ir
lilac0112_1 0:ea35c18c85fc 98 uint8_t irKey;
lilac0112_1 0:ea35c18c85fc 99 uint8_t irNotice;
lilac0112_1 0:ea35c18c85fc 100 uint8_t irSpot[2];
lilac0112_1 0:ea35c18c85fc 101 uint8_t irPosition;
lilac0112_1 0:ea35c18c85fc 102 uint8_t IrFlag;
lilac0112_1 0:ea35c18c85fc 103 //line
lilac0112_1 0:ea35c18c85fc 104 uint8_t lnFlag[3];
lilac0112_1 0:ea35c18c85fc 105 uint8_t ball;
lilac0112_1 0:ea35c18c85fc 106 uint8_t KickOffFlag;
lilac0112_1 0:ea35c18c85fc 107 //uint8_t LineBind[4];//宣言すると動かない⇒構造体の限界
lilac0112_1 0:ea35c18c85fc 108 uint8_t KickFlag;
lilac0112_1 0:ea35c18c85fc 109 //motor
lilac0112_1 0:ea35c18c85fc 110 int32_t motorlog[2];
lilac0112_1 0:ea35c18c85fc 111 uint8_t MotorFlag;
lilac0112_1 0:ea35c18c85fc 112 double s_pow;
lilac0112_1 0:ea35c18c85fc 113 double l_pow;
lilac0112_1 0:ea35c18c85fc 114 //cmps&pid
lilac0112_1 0:ea35c18c85fc 115 uint8_t PidFlag;
lilac0112_1 0:ea35c18c85fc 116 double cmps, CmpsInitialValue, CmpsDiff, FrontDeg;//0<x<360
lilac0112_1 0:ea35c18c85fc 117 double InputPID;//<<gyrosensor
lilac0112_1 0:ea35c18c85fc 118 int16_t OutputPID;//>>motor
lilac0112_1 0:ea35c18c85fc 119 uint8_t strategy;
lilac0112_1 0:ea35c18c85fc 120 uint8_t init_point_flag;
lilac0112_1 0:ea35c18c85fc 121 uint8_t stopflag;
lilac0112_1 0:ea35c18c85fc 122 } Record;
lilac0112_1 1:3e013ae7900d 123 */
lilac0112_1 0:ea35c18c85fc 124 //NewStruct
lilac0112_1 0:ea35c18c85fc 125 typedef struct {
lilac0112_1 0:ea35c18c85fc 126 //cmps&pid
lilac0112_1 0:ea35c18c85fc 127 double cmps, CmpsInitialValue, CmpsDiff, FrontDeg;//0<x<360
lilac0112_1 0:ea35c18c85fc 128 double InputPID;//<<gyrosensor
lilac0112_1 0:ea35c18c85fc 129 int16_t OutputPID;//>>motor
lilac0112_1 0:ea35c18c85fc 130 } CompassVal;
lilac0112_1 0:ea35c18c85fc 131 typedef struct {
lilac0112_1 0:ea35c18c85fc 132 //ping
lilac0112_1 0:ea35c18c85fc 133 uint8_t ping[4];
lilac0112_1 0:ea35c18c85fc 134 //line
lilac0112_1 0:ea35c18c85fc 135 uint8_t lineSpot[3];
lilac0112_1 0:ea35c18c85fc 136 //ir(spi)
lilac0112_1 0:ea35c18c85fc 137 uint8_t irKey;//2bit
lilac0112_1 1:3e013ae7900d 138 uint8_t irValPhase[2];//3*2bit
lilac0112_1 0:ea35c18c85fc 139 uint8_t irSpot[2];//4*2bit
lilac0112_1 0:ea35c18c85fc 140 //ir(playing)
lilac0112_1 0:ea35c18c85fc 141 uint8_t irNotice;
lilac0112_1 0:ea35c18c85fc 142 uint8_t irPosition;
lilac0112_1 0:ea35c18c85fc 143 //ball
lilac0112_1 0:ea35c18c85fc 144 uint8_t ball;
lilac0112_1 0:ea35c18c85fc 145 } SensorVal;
lilac0112_1 0:ea35c18c85fc 146 typedef struct {
lilac0112_1 0:ea35c18c85fc 147 //line
lilac0112_1 0:ea35c18c85fc 148 uint8_t lnFlag[3];
lilac0112_1 0:ea35c18c85fc 149 uint8_t Flag[3];
lilac0112_1 0:ea35c18c85fc 150 uint8_t Priority[3];
lilac0112_1 0:ea35c18c85fc 151 uint8_t Bind[3];
lilac0112_1 0:ea35c18c85fc 152 } LineVal;
lilac0112_1 0:ea35c18c85fc 153 typedef struct {
lilac0112_1 0:ea35c18c85fc 154 //system,flag
lilac0112_1 0:ea35c18c85fc 155 uint8_t strategy;
lilac0112_1 0:ea35c18c85fc 156 //uint8_t init_point_flag;
lilac0112_1 0:ea35c18c85fc 157 uint8_t jump_flag;//0<=x<=STATE_NUM_Y
lilac0112_1 0:ea35c18c85fc 158 uint8_t stopflag;
lilac0112_1 0:ea35c18c85fc 159 uint8_t KickOffFlag;
lilac0112_1 0:ea35c18c85fc 160 uint8_t DribbleFlag;
lilac0112_1 0:ea35c18c85fc 161 uint8_t KickFlag;
lilac0112_1 0:ea35c18c85fc 162 uint8_t MotorFlag;
lilac0112_1 0:ea35c18c85fc 163 uint8_t IrFlag;
lilac0112_1 0:ea35c18c85fc 164 uint8_t UswFlag;
lilac0112_1 0:ea35c18c85fc 165 uint8_t UswFlag_2;
lilac0112_1 0:ea35c18c85fc 166 uint8_t PidFlag;
lilac0112_1 0:ea35c18c85fc 167 //motor
lilac0112_1 0:ea35c18c85fc 168 double s_pow;
lilac0112_1 0:ea35c18c85fc 169 double l_pow;
lilac0112_1 0:ea35c18c85fc 170 int8_t dri_pow;
lilac0112_1 0:ea35c18c85fc 171 } SystemVal;
lilac0112_1 0:ea35c18c85fc 172 #endif