ジャパンオープン用のメインプログラム
Dependencies: mbed AQM1602 HMC6352 PID
setting/def.h@8:25c8c75d182a, 2016-03-06 (annotated)
- Committer:
- lilac0112_1
- Date:
- Sun Mar 06 15:43:26 2016 +0000
- Revision:
- 8:25c8c75d182a
- Parent:
- 7:efe90188a49d
- Child:
- 9:c966191926c5
somehow
Who changed what in which revision?
User | Revision | Line number | New 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 | 7:efe90188a49d | 20 | #define LCD_COLUMN_NUM 0x11 |
lilac0112_1 | 3:c49ea7ad8e91 | 21 | #define BUFSIZE 7 |
lilac0112_1 | 0:ea35c18c85fc | 22 | #define STATE_NUM_X 0x04 |
lilac0112_1 | 0:ea35c18c85fc | 23 | #define STATE_NUM_Y 0x10 |
lilac0112_1 | 3:c49ea7ad8e91 | 24 | |
lilac0112_1 | 4:52da8da146d4 | 25 | #define JUMP_TAG_MAX 0xFFFF |
lilac0112_1 | 4:52da8da146d4 | 26 | //tag |
lilac0112_1 | 8:25c8c75d182a | 27 | #define ZERO_FUNCTION 0 |
lilac0112_1 | 8:25c8c75d182a | 28 | #define START 1 |
lilac0112_1 | 8:25c8c75d182a | 29 | #define GET_IR 2 |
lilac0112_1 | 8:25c8c75d182a | 30 | #define GET_LINE 3 |
lilac0112_1 | 8:25c8c75d182a | 31 | #define GET_PID_VALUE 4 |
lilac0112_1 | 8:25c8c75d182a | 32 | #define CALIBRATION_ENTER 5 |
lilac0112_1 | 8:25c8c75d182a | 33 | #define CALIBRATION_EXIT 6 |
lilac0112_1 | 8:25c8c75d182a | 34 | #define FRONT_RESET 7 |
lilac0112_1 | 8:25c8c75d182a | 35 | #define SET_POWER1 8 |
lilac0112_1 | 8:25c8c75d182a | 36 | #define SET_POWER2 9 |
lilac0112_1 | 8:25c8c75d182a | 37 | #define SOFT_RESET 10 |
lilac0112_1 | 8:25c8c75d182a | 38 | #define SET_STRATEGY1 11 |
lilac0112_1 | 8:25c8c75d182a | 39 | #define SET_STRATEGY2 12 |
lilac0112_1 | 8:25c8c75d182a | 40 | #define SET_STRATEGY3 13 |
lilac0112_1 | 8:25c8c75d182a | 41 | #define SET_STRATEGY4 14 |
lilac0112_1 | 8:25c8c75d182a | 42 | #define START2 15 |
lilac0112_1 | 8:25c8c75d182a | 43 | |
lilac0112_1 | 8:25c8c75d182a | 44 | #define SET_POWER_DOWN 16 |
lilac0112_1 | 8:25c8c75d182a | 45 | #define SET_POWER_UP 17 |
lilac0112_1 | 8:25c8c75d182a | 46 | #define SET_STRATEGY_DOWN 18 |
lilac0112_1 | 8:25c8c75d182a | 47 | #define SET_STRATEGY_UP 19 |
lilac0112_1 | 4:52da8da146d4 | 48 | |
lilac0112_1 | 3:c49ea7ad8e91 | 49 | typedef struct {//for command |
lilac0112_1 | 3:c49ea7ad8e91 | 50 | char LcdStr[STATE_NUM_X][BUFSIZE]; |
lilac0112_1 | 3:c49ea7ad8e91 | 51 | uint8_t str_num; |
lilac0112_1 | 3:c49ea7ad8e91 | 52 | uint8_t (*CommandFunction)(uint8_t x); |
lilac0112_1 | 4:52da8da146d4 | 53 | uint16_t tag_num; |
lilac0112_1 | 3:c49ea7ad8e91 | 54 | } CommandItem; |
lilac0112_1 | 3:c49ea7ad8e91 | 55 | |
lilac0112_1 | 7:efe90188a49d | 56 | |
lilac0112_1 | 7:efe90188a49d | 57 | //tag |
lilac0112_1 | 7:efe90188a49d | 58 | #define MODE_ATTACK0 0 |
lilac0112_1 | 7:efe90188a49d | 59 | #define MODE_ATTACK1 1 |
lilac0112_1 | 7:efe90188a49d | 60 | #define MODE_ATTACK2 2 |
lilac0112_1 | 7:efe90188a49d | 61 | #define MODE_ATTACK3 3 |
lilac0112_1 | 7:efe90188a49d | 62 | #define MODE_ATTACK4 4 |
lilac0112_1 | 7:efe90188a49d | 63 | #define MODE_ATTACK5 5 |
lilac0112_1 | 7:efe90188a49d | 64 | |
lilac0112_1 | 7:efe90188a49d | 65 | #define MODE_DEBUG0 6 |
lilac0112_1 | 7:efe90188a49d | 66 | #define MODE_DEBUG1 7 |
lilac0112_1 | 7:efe90188a49d | 67 | #define MODE_DEBUG2 8 |
lilac0112_1 | 7:efe90188a49d | 68 | #define MODE_DEBUG3 9 |
lilac0112_1 | 7:efe90188a49d | 69 | #define MODE_DEBUG4 10 |
lilac0112_1 | 7:efe90188a49d | 70 | #define MODE_DEBUG5 11 |
lilac0112_1 | 7:efe90188a49d | 71 | |
lilac0112_1 | 7:efe90188a49d | 72 | typedef struct {//for active |
lilac0112_1 | 7:efe90188a49d | 73 | char LcdStr[LCD_COLUMN_NUM]; |
lilac0112_1 | 7:efe90188a49d | 74 | void (*ActiveFunction)(void); |
lilac0112_1 | 7:efe90188a49d | 75 | uint16_t tag_num; |
lilac0112_1 | 7:efe90188a49d | 76 | } ActiveItem; |
lilac0112_1 | 7:efe90188a49d | 77 | |
lilac0112_1 | 0:ea35c18c85fc | 78 | //繰り返し割り込み |
lilac0112_1 | 0:ea35c18c85fc | 79 | #define DUTY_NUM 1 |
lilac0112_1 | 0:ea35c18c85fc | 80 | |
lilac0112_1 | 0:ea35c18c85fc | 81 | #define DUTY_SW 0 |
lilac0112_1 | 0:ea35c18c85fc | 82 | #define DUTY_GYRO 1 |
lilac0112_1 | 0:ea35c18c85fc | 83 | #define DUTY_PING 2 |
lilac0112_1 | 0:ea35c18c85fc | 84 | #define DUTY_COLOR 3 |
lilac0112_1 | 0:ea35c18c85fc | 85 | #define DUTY_MOUSE 4 |
lilac0112_1 | 0:ea35c18c85fc | 86 | |
lilac0112_1 | 0:ea35c18c85fc | 87 | /*PID処理*/ |
lilac0112_1 | 0:ea35c18c85fc | 88 | #define RATE 0.052//52 |
lilac0112_1 | 0:ea35c18c85fc | 89 | #define PID_BIAS 1.0 |
lilac0112_1 | 0:ea35c18c85fc | 90 | #define REFERENCE 180.0 |
lilac0112_1 | 0:ea35c18c85fc | 91 | #define MINIMUM 0.0 |
lilac0112_1 | 0:ea35c18c85fc | 92 | #define MAXIMUM 359.9 |
lilac0112_1 | 0:ea35c18c85fc | 93 | #define P_GAIN 1.3//1.25//0.8 //0.78 |
lilac0112_1 | 0:ea35c18c85fc | 94 | #define I_GAIN 0.0 //0.0 |
lilac0112_1 | 0:ea35c18c85fc | 95 | #define D_GAIN 0.01//0.01 //0.009 |
lilac0112_1 | 0:ea35c18c85fc | 96 | #define OUT_LIMIT 30.0 |
lilac0112_1 | 0:ea35c18c85fc | 97 | #define MAX_POW 100 |
lilac0112_1 | 0:ea35c18c85fc | 98 | #define MIN_POW -100 |
lilac0112_1 | 0:ea35c18c85fc | 99 | #define PID_CYCLE 0.05 //s |
lilac0112_1 | 0:ea35c18c85fc | 100 | |
lilac0112_1 | 0:ea35c18c85fc | 101 | //ir |
lilac0112_1 | 5:5ff3a7d5d8c2 | 102 | //ir_pow_old |
lilac0112_1 | 0:ea35c18c85fc | 103 | #define IR_X 0 |
lilac0112_1 | 0:ea35c18c85fc | 104 | #define IR_Y 1 |
lilac0112_1 | 5:5ff3a7d5d8c2 | 105 | //ir_pow |
lilac0112_1 | 5:5ff3a7d5d8c2 | 106 | #define IR_X_DIR 0 |
lilac0112_1 | 5:5ff3a7d5d8c2 | 107 | #define IR_Y_DIR 1 |
lilac0112_1 | 5:5ff3a7d5d8c2 | 108 | #define IR_X_TURN 2 |
lilac0112_1 | 5:5ff3a7d5d8c2 | 109 | #define IR_Y_TURN 3 |
lilac0112_1 | 5:5ff3a7d5d8c2 | 110 | |
lilac0112_1 | 0:ea35c18c85fc | 111 | #define IR_SHORT 0 |
lilac0112_1 | 0:ea35c18c85fc | 112 | #define IR_LONG 1 |
lilac0112_1 | 0:ea35c18c85fc | 113 | |
lilac0112_1 | 0:ea35c18c85fc | 114 | #define X_AXIS 0 |
lilac0112_1 | 0:ea35c18c85fc | 115 | #define Y_AXIS 1 |
lilac0112_1 | 0:ea35c18c85fc | 116 | |
lilac0112_1 | 1:3e013ae7900d | 117 | |
lilac0112_1 | 1:3e013ae7900d | 118 | #define DIS_0 0x0//low_value |
lilac0112_1 | 1:3e013ae7900d | 119 | #define DIS_1 0x1 |
lilac0112_1 | 1:3e013ae7900d | 120 | #define DIS_2 0x2 |
lilac0112_1 | 1:3e013ae7900d | 121 | #define DIS_3 0x3 |
lilac0112_1 | 1:3e013ae7900d | 122 | #define DIS_4 0x4 |
lilac0112_1 | 1:3e013ae7900d | 123 | #define DIS_5 0x5 |
lilac0112_1 | 1:3e013ae7900d | 124 | #define DIS_6 0x6 |
lilac0112_1 | 1:3e013ae7900d | 125 | #define DIS_7 0x7//high_value |
lilac0112_1 | 1:3e013ae7900d | 126 | |
lilac0112_1 | 0:ea35c18c85fc | 127 | //ping |
lilac0112_1 | 0:ea35c18c85fc | 128 | #define L_PING 0 |
lilac0112_1 | 0:ea35c18c85fc | 129 | #define R_PING 1 |
lilac0112_1 | 0:ea35c18c85fc | 130 | #define F_PING 2 |
lilac0112_1 | 0:ea35c18c85fc | 131 | #define B_PING 3 |
lilac0112_1 | 0:ea35c18c85fc | 132 | |
lilac0112_1 | 0:ea35c18c85fc | 133 | //0,1...main |
lilac0112_1 | 0:ea35c18c85fc | 134 | //2,3...debug board |
lilac0112_1 | 0:ea35c18c85fc | 135 | |
lilac0112_1 | 0:ea35c18c85fc | 136 | //line |
lilac0112_1 | 0:ea35c18c85fc | 137 | #define A_SPOT 0 |
lilac0112_1 | 0:ea35c18c85fc | 138 | #define B_SPOT 1 |
lilac0112_1 | 0:ea35c18c85fc | 139 | #define C_SPOT 2 |
lilac0112_1 | 0:ea35c18c85fc | 140 | #define AB_SPOT 3 |
lilac0112_1 | 0:ea35c18c85fc | 141 | |
lilac0112_1 | 0:ea35c18c85fc | 142 | #define LINE_RF 5 |
lilac0112_1 | 0:ea35c18c85fc | 143 | #define LINE_DELAY 0.5 |
lilac0112_1 | 0:ea35c18c85fc | 144 | |
lilac0112_1 | 0:ea35c18c85fc | 145 | //思考パターン |
lilac0112_1 | 0:ea35c18c85fc | 146 | #define STRATEGY_NUM 12 |
lilac0112_1 | 0:ea35c18c85fc | 147 | |
lilac0112_1 | 0:ea35c18c85fc | 148 | //計算 |
lilac0112_1 | 0:ea35c18c85fc | 149 | #define ROUND(x) ((x > 0) ? (x + 0.5) : (x - 0.5))//x...整数 |
lilac0112_1 | 0:ea35c18c85fc | 150 | #define PI 3.14159265358979323846 |
lilac0112_1 | 0:ea35c18c85fc | 151 | #define DEG2RAD(deg) (PI*(deg)/180.0) |
lilac0112_1 | 0:ea35c18c85fc | 152 | #define RAD2DEG(rad) (180.0(rad)/PI) |
lilac0112_1 | 0:ea35c18c85fc | 153 | |
lilac0112_1 | 0:ea35c18c85fc | 154 | //データ |
lilac0112_1 | 1:3e013ae7900d | 155 | /* |
lilac0112_1 | 0:ea35c18c85fc | 156 | typedef struct {//ir,line,gyro,mouse,ping |
lilac0112_1 | 0:ea35c18c85fc | 157 | //ping |
lilac0112_1 | 0:ea35c18c85fc | 158 | uint8_t ping[4]; |
lilac0112_1 | 0:ea35c18c85fc | 159 | //ir |
lilac0112_1 | 0:ea35c18c85fc | 160 | uint8_t irKey; |
lilac0112_1 | 0:ea35c18c85fc | 161 | uint8_t irNotice; |
lilac0112_1 | 0:ea35c18c85fc | 162 | uint8_t irSpot[2]; |
lilac0112_1 | 0:ea35c18c85fc | 163 | uint8_t irPosition; |
lilac0112_1 | 0:ea35c18c85fc | 164 | uint8_t IrFlag; |
lilac0112_1 | 0:ea35c18c85fc | 165 | //line |
lilac0112_1 | 0:ea35c18c85fc | 166 | uint8_t lnFlag[3]; |
lilac0112_1 | 0:ea35c18c85fc | 167 | uint8_t ball; |
lilac0112_1 | 0:ea35c18c85fc | 168 | uint8_t KickOffFlag; |
lilac0112_1 | 0:ea35c18c85fc | 169 | //uint8_t LineBind[4];//宣言すると動かない⇒構造体の限界 |
lilac0112_1 | 0:ea35c18c85fc | 170 | uint8_t KickFlag; |
lilac0112_1 | 0:ea35c18c85fc | 171 | //motor |
lilac0112_1 | 0:ea35c18c85fc | 172 | int32_t motorlog[2]; |
lilac0112_1 | 0:ea35c18c85fc | 173 | uint8_t MotorFlag; |
lilac0112_1 | 0:ea35c18c85fc | 174 | double s_pow; |
lilac0112_1 | 0:ea35c18c85fc | 175 | double l_pow; |
lilac0112_1 | 0:ea35c18c85fc | 176 | //cmps&pid |
lilac0112_1 | 0:ea35c18c85fc | 177 | uint8_t PidFlag; |
lilac0112_1 | 0:ea35c18c85fc | 178 | double cmps, CmpsInitialValue, CmpsDiff, FrontDeg;//0<x<360 |
lilac0112_1 | 0:ea35c18c85fc | 179 | double InputPID;//<<gyrosensor |
lilac0112_1 | 0:ea35c18c85fc | 180 | int16_t OutputPID;//>>motor |
lilac0112_1 | 0:ea35c18c85fc | 181 | uint8_t strategy; |
lilac0112_1 | 0:ea35c18c85fc | 182 | uint8_t init_point_flag; |
lilac0112_1 | 0:ea35c18c85fc | 183 | uint8_t stopflag; |
lilac0112_1 | 0:ea35c18c85fc | 184 | } Record; |
lilac0112_1 | 1:3e013ae7900d | 185 | */ |
lilac0112_1 | 0:ea35c18c85fc | 186 | //NewStruct |
lilac0112_1 | 0:ea35c18c85fc | 187 | typedef struct { |
lilac0112_1 | 0:ea35c18c85fc | 188 | //cmps&pid |
lilac0112_1 | 0:ea35c18c85fc | 189 | double cmps, CmpsInitialValue, CmpsDiff, FrontDeg;//0<x<360 |
lilac0112_1 | 0:ea35c18c85fc | 190 | double InputPID;//<<gyrosensor |
lilac0112_1 | 0:ea35c18c85fc | 191 | int16_t OutputPID;//>>motor |
lilac0112_1 | 0:ea35c18c85fc | 192 | } CompassVal; |
lilac0112_1 | 0:ea35c18c85fc | 193 | typedef struct { |
lilac0112_1 | 0:ea35c18c85fc | 194 | //ping |
lilac0112_1 | 0:ea35c18c85fc | 195 | uint8_t ping[4]; |
lilac0112_1 | 0:ea35c18c85fc | 196 | //line |
lilac0112_1 | 0:ea35c18c85fc | 197 | uint8_t lineSpot[3]; |
lilac0112_1 | 2:635947de1583 | 198 | uint8_t lnFlag[3]; |
lilac0112_1 | 2:635947de1583 | 199 | /*uint8_t LineFlag[3]; |
lilac0112_1 | 2:635947de1583 | 200 | uint8_t LinePriority[3]; |
lilac0112_1 | 2:635947de1583 | 201 | uint8_t LineBind[3];*/ |
lilac0112_1 | 0:ea35c18c85fc | 202 | //ir(spi) |
lilac0112_1 | 0:ea35c18c85fc | 203 | uint8_t irKey;//2bit |
lilac0112_1 | 1:3e013ae7900d | 204 | uint8_t irValPhase[2];//3*2bit |
lilac0112_1 | 2:635947de1583 | 205 | uint8_t irDif[2];//3bit |
lilac0112_1 | 2:635947de1583 | 206 | uint8_t irPosition;//5bit |
lilac0112_1 | 2:635947de1583 | 207 | |
lilac0112_1 | 2:635947de1583 | 208 | uint8_t irSpot[2];//4*2bit//old |
lilac0112_1 | 0:ea35c18c85fc | 209 | //ir(playing) |
lilac0112_1 | 0:ea35c18c85fc | 210 | uint8_t irNotice; |
lilac0112_1 | 0:ea35c18c85fc | 211 | //ball |
lilac0112_1 | 0:ea35c18c85fc | 212 | uint8_t ball; |
lilac0112_1 | 0:ea35c18c85fc | 213 | } SensorVal; |
lilac0112_1 | 0:ea35c18c85fc | 214 | typedef struct { |
lilac0112_1 | 0:ea35c18c85fc | 215 | //system,flag |
lilac0112_1 | 0:ea35c18c85fc | 216 | uint8_t strategy; |
lilac0112_1 | 4:52da8da146d4 | 217 | uint16_t jump_flag;//0<=x<=JUMP_TAG_NUM |
lilac0112_1 | 0:ea35c18c85fc | 218 | uint8_t stopflag; |
lilac0112_1 | 0:ea35c18c85fc | 219 | uint8_t KickOffFlag; |
lilac0112_1 | 0:ea35c18c85fc | 220 | uint8_t DribbleFlag; |
lilac0112_1 | 8:25c8c75d182a | 221 | uint8_t BackHomeFlag; |
lilac0112_1 | 0:ea35c18c85fc | 222 | uint8_t KickFlag; |
lilac0112_1 | 0:ea35c18c85fc | 223 | uint8_t MotorFlag; |
lilac0112_1 | 0:ea35c18c85fc | 224 | uint8_t IrFlag; |
lilac0112_1 | 0:ea35c18c85fc | 225 | uint8_t UswFlag; |
lilac0112_1 | 0:ea35c18c85fc | 226 | uint8_t UswFlag_2; |
lilac0112_1 | 0:ea35c18c85fc | 227 | uint8_t PidFlag; |
lilac0112_1 | 8:25c8c75d182a | 228 | //blind//on...1/off...0 |
lilac0112_1 | 8:25c8c75d182a | 229 | uint8_t IrBlind; |
lilac0112_1 | 8:25c8c75d182a | 230 | uint8_t LineBlind; |
lilac0112_1 | 8:25c8c75d182a | 231 | uint8_t PingBlind; |
lilac0112_1 | 0:ea35c18c85fc | 232 | //motor |
lilac0112_1 | 7:efe90188a49d | 233 | uint8_t pow_num; |
lilac0112_1 | 6:f9167470d819 | 234 | uint8_t s_pow; |
lilac0112_1 | 6:f9167470d819 | 235 | uint8_t m_pow; |
lilac0112_1 | 6:f9167470d819 | 236 | uint8_t l_pow; |
lilac0112_1 | 6:f9167470d819 | 237 | uint8_t dri_pow; |
lilac0112_1 | 2:635947de1583 | 238 | uint8_t ir_pow_table; |
lilac0112_1 | 0:ea35c18c85fc | 239 | } SystemVal; |
lilac0112_1 | 2:635947de1583 | 240 | |
lilac0112_1 | 0:ea35c18c85fc | 241 | #endif |