Dependencies:   PID Serialservo TCS3200 XQ_servo encoder encoder2 mbed moter

Fork of nhk_2018_undercarry_test09 by ケンタ ミヤザキ

Committer:
kenken0721
Date:
Sat Apr 07 05:10:02 2018 +0000
Revision:
8:91a72648f312
Parent:
7:f1a924244b76
Child:
9:0c1fce6d8094

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenken0721 0:f6828b914b1c 1 #include "mbed.h"
kenken0721 0:f6828b914b1c 2 #include "config.h"
kenken0721 0:f6828b914b1c 3 #include "moter.h"
kenken0721 0:f6828b914b1c 4 #include "PID.h"
kenken0721 1:f4dbd6b9cc27 5 #include "encoder.h"
kenken0721 4:eabb7a738ff8 6 #include "encoder2.h"
kenken0721 4:eabb7a738ff8 7 #include "Serialservo.h"
kenken0721 4:eabb7a738ff8 8 #include "XQ_servo.h"
kenken0721 0:f6828b914b1c 9
kenken0721 0:f6828b914b1c 10 Serial pc(USBTX, USBRX);
kenken0721 0:f6828b914b1c 11 Serial kbtpc(PC_12 ,PD_2);//serial5
kenken0721 0:f6828b914b1c 12 I2C master(sda, scl);
kenken0721 4:eabb7a738ff8 13 DigitalOut led2(LED2);//チェック用
kenken0721 0:f6828b914b1c 14 PID S_pid(SP, SI, SD, 0.0);
kenken0721 2:c5996dd62e9c 15 PID R_pid(RP, RI, RD, 0.0);
kenken0721 2:c5996dd62e9c 16 PID L_pid(LP, LI, LD, 0.0);
kenken0721 4:eabb7a738ff8 17
kenken0721 2:c5996dd62e9c 18 Encoder Enc_Carry_Y(PA_15,PA_14,PC_1);
kenken0721 2:c5996dd62e9c 19 Encoder Enc_Carry_X(PA_4,PB_0,PB_7);
kenken0721 4:eabb7a738ff8 20 Encoder2 Enc_Arm(PF_1,PA_0,PA_1);
kenken0721 4:eabb7a738ff8 21
kenken0721 3:aaa2fde4fafd 22 DigitalOut buzzer(PA_10);
kenken0721 3:aaa2fde4fafd 23 DigitalOut lamp(PC_3);
kenken0721 3:aaa2fde4fafd 24 Timer timer;
kenken0721 4:eabb7a738ff8 25 Serialservo servo1(PC_10, PC_11);//アームの肘
kenken0721 4:eabb7a738ff8 26 Serialservo servo2(PC_10, PC_11);//回転軸
kenken0721 4:eabb7a738ff8 27 XQ_servo servo_hand(PB_5);
kenken0721 6:ff7fd6556a81 28 DigitalOut throwing_relay(PC_9);
kenken0721 4:eabb7a738ff8 29 DigitalIn distance(PC_2);
kenken0721 4:eabb7a738ff8 30 DigitalIn redIn(PC_4);
kenken0721 4:eabb7a738ff8 31 DigitalIn blueIn(PB_2);
kenken0721 4:eabb7a738ff8 32 DigitalIn micro_switch(PC_0);
kenken0721 4:eabb7a738ff8 33 DigitalOut air(PB_4);
kenken0721 4:eabb7a738ff8 34
kenken0721 7:f1a924244b76 35 DigitalOut motor_dir1(PA_8);
kenken0721 4:eabb7a738ff8 36 DigitalOut motor_dir2(PA_9);
kenken0721 4:eabb7a738ff8 37 PwmOut motor_pwm(PB_3);
kenken0721 4:eabb7a738ff8 38
kenken0721 0:f6828b914b1c 39 PwmOut pwm_pins[] = {
kenken0721 0:f6828b914b1c 40 PwmOut( PC_8 ),
kenken0721 0:f6828b914b1c 41 PwmOut( PC_6 ),
kenken0721 0:f6828b914b1c 42 PwmOut( PB_14 ),
kenken0721 0:f6828b914b1c 43 PwmOut( PB_13 )
kenken0721 0:f6828b914b1c 44 };
kenken0721 0:f6828b914b1c 45
kenken0721 0:f6828b914b1c 46 DigitalOut dir_pins_1[] = {
kenken0721 0:f6828b914b1c 47 DigitalOut( PC_5 ),
kenken0721 0:f6828b914b1c 48 DigitalOut( PA_7 ),
kenken0721 2:c5996dd62e9c 49 DigitalOut( PB_6 ),
kenken0721 2:c5996dd62e9c 50 DigitalOut( PB_1)
kenken0721 0:f6828b914b1c 51 };
kenken0721 0:f6828b914b1c 52
kenken0721 0:f6828b914b1c 53 DigitalOut dir_pins_2[] = {
kenken0721 0:f6828b914b1c 54 DigitalOut( PB_12 ),
kenken0721 0:f6828b914b1c 55 DigitalOut( PA_6 ),
kenken0721 2:c5996dd62e9c 56 DigitalOut( PC_7 ),
kenken0721 2:c5996dd62e9c 57 DigitalOut( PB_15)
kenken0721 0:f6828b914b1c 58 };
kenken0721 0:f6828b914b1c 59
kenken0721 6:ff7fd6556a81 60
kenken0721 6:ff7fd6556a81 61 void linecheck(char *buff ,int data[2]);
kenken0721 6:ff7fd6556a81 62 void LineCheck(int dmode);
kenken0721 7:f1a924244b76 63 void Linecount(void);
kenken0721 6:ff7fd6556a81 64 void syokikanomai(void);
kenken0721 6:ff7fd6556a81 65 void syokikanomai2(void);
kenken0721 6:ff7fd6556a81 66 void touteki(float armpower, int pos, bool thro_mode);
kenken0721 7:f1a924244b76 67 void yellow_throwing();
kenken0721 6:ff7fd6556a81 68
kenken0721 8:91a72648f312 69 bool set_pos_flag = false;
kenken0721 8:91a72648f312 70 bool redthrowing = false;
kenken0721 7:f1a924244b76 71 bool yellow_throw_flag = false;
kenken0721 7:f1a924244b76 72 bool taiki_flag = false;
kenken0721 2:c5996dd62e9c 73 int crosscount = 0;
kenken0721 0:f6828b914b1c 74 bool mode = true;//trueでラジコン、falseでオート
kenken0721 0:f6828b914b1c 75 bool stopflag = true;//trueで機体停止
kenken0721 0:f6828b914b1c 76 double power = POWER;
kenken0721 0:f6828b914b1c 77 int kbtread = 0;
kenken0721 0:f6828b914b1c 78 int count = 0;
kenken0721 0:f6828b914b1c 79 int counter = 0;
kenken0721 2:c5996dd62e9c 80 int linedata_1[2] = {0};
kenken0721 2:c5996dd62e9c 81 int linedata_2[2] = {0};
kenken0721 2:c5996dd62e9c 82 int linedata_3[2] = {0};
kenken0721 0:f6828b914b1c 83 int prelinedata = 0;
kenken0721 0:f6828b914b1c 84 double output = 0.0;
kenken0721 1:f4dbd6b9cc27 85 char buff1[2];
kenken0721 1:f4dbd6b9cc27 86 char buff2[2];
kenken0721 1:f4dbd6b9cc27 87 char buff3[2];
kenken0721 1:f4dbd6b9cc27 88 float x_dist = 0.0;
kenken0721 1:f4dbd6b9cc27 89 float y_dist = 0.0;
kenken0721 2:c5996dd62e9c 90 float tar_x_dist = 0.0;
kenken0721 7:f1a924244b76 91 float tar_x_dist_2 = 0.0;
kenken0721 2:c5996dd62e9c 92 float tar_y_dist = 0.0;
kenken0721 2:c5996dd62e9c 93 bool ontheline = false;
kenken0721 2:c5996dd62e9c 94 int directmode = STRAIGHT;
kenken0721 3:aaa2fde4fafd 95 int state = START;
kenken0721 3:aaa2fde4fafd 96 int times = 0;
kenken0721 4:eabb7a738ff8 97 int redcount = 0;
kenken0721 4:eabb7a738ff8 98 int bluecount = 0;
kenken0721 4:eabb7a738ff8 99 int yellowcount = 0;
kenken0721 4:eabb7a738ff8 100 bool syokika_flag=false;
kenken0721 4:eabb7a738ff8 101 bool set_flag = false;
kenken0721 4:eabb7a738ff8 102 int encoder_count = 1000;
kenken0721 7:f1a924244b76 103 int linecountcheck = false;
kenken0721 4:eabb7a738ff8 104
kenken0721 3:aaa2fde4fafd 105 int main() {
kenken0721 3:aaa2fde4fafd 106 timer.reset();
kenken0721 3:aaa2fde4fafd 107 timer.stop();
kenken0721 6:ff7fd6556a81 108 throwing_relay=0;
kenken0721 4:eabb7a738ff8 109 lamp=1;
kenken0721 4:eabb7a738ff8 110 air=1.0;
kenken0721 4:eabb7a738ff8 111 buzzer = 0.0;
kenken0721 4:eabb7a738ff8 112 micro_switch.mode(PullUp);
kenken0721 4:eabb7a738ff8 113 motor_pwm=0;
kenken0721 6:ff7fd6556a81 114 motor_dir1=1;
kenken0721 4:eabb7a738ff8 115 motor_dir2=1;
kenken0721 6:ff7fd6556a81 116 servo1.init(0);//アーム
kenken0721 6:ff7fd6556a81 117 servo2.init(1);//回転軸
kenken0721 1:f4dbd6b9cc27 118 S_pid.init();
kenken0721 3:aaa2fde4fafd 119 R_pid.init();
kenken0721 3:aaa2fde4fafd 120 L_pid.init();
kenken0721 1:f4dbd6b9cc27 121 pwm_pins[0].period(0.00005);
kenken0721 1:f4dbd6b9cc27 122 pwm_pins[1].period(0.00005);
kenken0721 1:f4dbd6b9cc27 123 pwm_pins[2].period(0.00005);
kenken0721 1:f4dbd6b9cc27 124 pwm_pins[3].period(0.00005);
kenken0721 4:eabb7a738ff8 125 motor_pwm.period(0.00005);
kenken0721 6:ff7fd6556a81 126 //------通信スピード----------------------------------------------
kenken0721 3:aaa2fde4fafd 127 pc.baud(115200);
kenken0721 2:c5996dd62e9c 128 kbtpc.baud(9600);
kenken0721 2:c5996dd62e9c 129 master.frequency(100000);
kenken0721 6:ff7fd6556a81 130 lamp = 1.0;
kenken0721 6:ff7fd6556a81 131 //-------初期化-------------------------------------------------
kenken0721 4:eabb7a738ff8 132 syokikanomai();
kenken0721 4:eabb7a738ff8 133 buzzer = 0;
kenken0721 6:ff7fd6556a81 134 //-----------メインループ----------------------------------------
kenken0721 1:f4dbd6b9cc27 135 while (true) {
kenken0721 7:f1a924244b76 136 if(directmode == STRAIGHT){
kenken0721 7:f1a924244b76 137 master.read(addr1,buff1,2);
kenken0721 7:f1a924244b76 138 linecheck(buff1,linedata_1);
kenken0721 7:f1a924244b76 139 }else if(directmode == RIGHT){
kenken0721 7:f1a924244b76 140 master.read(addr2,buff2,2);
kenken0721 7:f1a924244b76 141 linecheck(buff2,linedata_2);
kenken0721 7:f1a924244b76 142 }else if(directmode == LEFT){
kenken0721 7:f1a924244b76 143 master.read(addr3,buff3,2);
kenken0721 7:f1a924244b76 144 linecheck(buff3,linedata_3);
kenken0721 7:f1a924244b76 145 }
kenken0721 7:f1a924244b76 146
kenken0721 2:c5996dd62e9c 147 x_dist = Enc_Carry_X.read_rotate();
kenken0721 2:c5996dd62e9c 148 y_dist = Enc_Carry_Y.read_rotate();
kenken0721 3:aaa2fde4fafd 149 kbtpc.putc(state);
kenken0721 1:f4dbd6b9cc27 150 if(kbtpc.readable()){
kenken0721 1:f4dbd6b9cc27 151 kbtread = kbtpc.getc();
kenken0721 1:f4dbd6b9cc27 152 }
kenken0721 1:f4dbd6b9cc27 153 if(kbtread == 255){
kenken0721 1:f4dbd6b9cc27 154 mode = true;
kenken0721 1:f4dbd6b9cc27 155 }else if(kbtread == 150){
kenken0721 1:f4dbd6b9cc27 156 mode = false;
kenken0721 1:f4dbd6b9cc27 157 }else if(kbtread == 100){
kenken0721 1:f4dbd6b9cc27 158 stopflag = true;
kenken0721 1:f4dbd6b9cc27 159 }else if(kbtread == 200){
kenken0721 1:f4dbd6b9cc27 160 stopflag = false;
kenken0721 2:c5996dd62e9c 161 }else if(kbtread == STRAIGHT){
kenken0721 2:c5996dd62e9c 162 directmode = STRAIGHT;
kenken0721 2:c5996dd62e9c 163 }else if(kbtread == RIGHT){
kenken0721 2:c5996dd62e9c 164 directmode = RIGHT;
kenken0721 2:c5996dd62e9c 165 }else if(kbtread == LEFT){
kenken0721 2:c5996dd62e9c 166 directmode = LEFT;
kenken0721 3:aaa2fde4fafd 167 }else if(kbtread == START){
kenken0721 3:aaa2fde4fafd 168 state = START;
kenken0721 8:91a72648f312 169 }else if(kbtread == STAND_BY_1){
kenken0721 8:91a72648f312 170 state = STAND_BY_1;
kenken0721 8:91a72648f312 171 }else if(kbtread == YELLOW_RECEIVE){
kenken0721 8:91a72648f312 172 state = YELLOW_RECEIVE;
kenken0721 8:91a72648f312 173 crosscount = 5;
kenken0721 8:91a72648f312 174 air = 0.0;
kenken0721 1:f4dbd6b9cc27 175 }
kenken0721 8:91a72648f312 176
kenken0721 1:f4dbd6b9cc27 177 //--------------手動--------------------------------------
kenken0721 1:f4dbd6b9cc27 178 if(mode == true){
kenken0721 1:f4dbd6b9cc27 179 led2 = 1.0;
kenken0721 2:c5996dd62e9c 180 if(kbtread == STRAIGHT){
kenken0721 1:f4dbd6b9cc27 181 Straight(power, power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 182 }else if(kbtread == BACK){
kenken0721 1:f4dbd6b9cc27 183 Back(power, power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 184 }else if(kbtread == RIGHT){
kenken0721 1:f4dbd6b9cc27 185 Right(power, power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 186 }else if(kbtread == LEFT){
kenken0721 1:f4dbd6b9cc27 187 Left(power, power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 1:f4dbd6b9cc27 188 }else{
kenken0721 1:f4dbd6b9cc27 189 Stop(pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 1:f4dbd6b9cc27 190 }
kenken0721 1:f4dbd6b9cc27 191 //--------------自動---------------------------------
kenken0721 1:f4dbd6b9cc27 192 }else if(mode == false){
kenken0721 1:f4dbd6b9cc27 193 led2 = 0.0;
kenken0721 1:f4dbd6b9cc27 194 if(stopflag == true){
kenken0721 1:f4dbd6b9cc27 195 Stop(pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 1:f4dbd6b9cc27 196 }else{
kenken0721 2:c5996dd62e9c 197 LineCheck(directmode);
kenken0721 3:aaa2fde4fafd 198 switch(state){
kenken0721 4:eabb7a738ff8 199 //------------------初期位置から待機位置1------------------------------------------
kenken0721 3:aaa2fde4fafd 200 case START:
kenken0721 3:aaa2fde4fafd 201 if(crosscount == 0){
kenken0721 3:aaa2fde4fafd 202 directmode = STRAIGHT;
kenken0721 6:ff7fd6556a81 203 }else if(crosscount == 1){
kenken0721 6:ff7fd6556a81 204 if(directmode == STRAIGHT){
kenken0721 6:ff7fd6556a81 205 directmode = LEFT;
kenken0721 6:ff7fd6556a81 206 prelinedata = 0;
kenken0721 6:ff7fd6556a81 207 }else if(directmode == LEFT){
kenken0721 6:ff7fd6556a81 208 directmode = LEFT;
kenken0721 7:f1a924244b76 209 Linecount();
kenken0721 6:ff7fd6556a81 210 }
kenken0721 3:aaa2fde4fafd 211 }else if(crosscount == 2){
kenken0721 3:aaa2fde4fafd 212 directmode = STOP;
kenken0721 3:aaa2fde4fafd 213 state = STAND_BY_1;
kenken0721 3:aaa2fde4fafd 214 crosscount = 0;
kenken0721 3:aaa2fde4fafd 215 prelinedata = 0;
kenken0721 3:aaa2fde4fafd 216 }
kenken0721 3:aaa2fde4fafd 217 break;
kenken0721 4:eabb7a738ff8 218 //------------------待機位置1----------------------------------------------------
kenken0721 3:aaa2fde4fafd 219 case STAND_BY_1:
kenken0721 3:aaa2fde4fafd 220 crosscount = 0;
kenken0721 3:aaa2fde4fafd 221 directmode = STOP;
kenken0721 4:eabb7a738ff8 222 if(distance == 1.0){
kenken0721 8:91a72648f312 223 if(redthrowing == false){
kenken0721 8:91a72648f312 224 if(redIn == 1.0){
kenken0721 8:91a72648f312 225 buzzer = 1.0;
kenken0721 8:91a72648f312 226 redcount++;
kenken0721 8:91a72648f312 227 }else {
kenken0721 8:91a72648f312 228 buzzer = 0.0;
kenken0721 8:91a72648f312 229 }
kenken0721 8:91a72648f312 230 }else if(redthrowing == true){
kenken0721 8:91a72648f312 231 if(redIn == 1.0){
kenken0721 8:91a72648f312 232 buzzer = 1.0;
kenken0721 8:91a72648f312 233 bluecount++;
kenken0721 8:91a72648f312 234 }else {
kenken0721 8:91a72648f312 235 buzzer = 0.0;
kenken0721 8:91a72648f312 236 }
kenken0721 4:eabb7a738ff8 237 }
kenken0721 4:eabb7a738ff8 238 if(redcount >= 100 ){
kenken0721 8:91a72648f312 239 buzzer = 0;
kenken0721 4:eabb7a738ff8 240 servo_hand.move(hand_tsukami_degree);
kenken0721 4:eabb7a738ff8 241 servo1.move(hiji_tsukami_degree);
kenken0721 6:ff7fd6556a81 242 servo1.move(hiji_tsukami_degree);
kenken0721 4:eabb7a738ff8 243 }else if(bluecount >= 100){
kenken0721 4:eabb7a738ff8 244 servo_hand.move(hand_tsukami_degree);
kenken0721 4:eabb7a738ff8 245 servo1.move(hiji_tsukami_degree);
kenken0721 6:ff7fd6556a81 246 servo1.move(hiji_tsukami_degree);
kenken0721 4:eabb7a738ff8 247 }
kenken0721 4:eabb7a738ff8 248 }else if(distance == 0.0 && redcount >= 100){
kenken0721 8:91a72648f312 249 servo2.move(koshi_red_nage_degree);
kenken0721 8:91a72648f312 250 servo2.move(koshi_red_nage_degree);
kenken0721 3:aaa2fde4fafd 251 state = RED_RECEIVE;
kenken0721 4:eabb7a738ff8 252 directmode = STOP;
kenken0721 4:eabb7a738ff8 253 redcount = 0;
kenken0721 4:eabb7a738ff8 254 crosscount = 0;
kenken0721 4:eabb7a738ff8 255 }else if(distance == 0.0 && bluecount >= 100){
kenken0721 8:91a72648f312 256 servo2.move(koshi_blue_nage_degree);
kenken0721 8:91a72648f312 257 servo2.move(koshi_blue_nage_degree);
kenken0721 4:eabb7a738ff8 258 state = BLUE_RECEIVE_1;
kenken0721 4:eabb7a738ff8 259 directmode = STOP;
kenken0721 4:eabb7a738ff8 260 bluecount = 0;
kenken0721 4:eabb7a738ff8 261 crosscount = 0;
kenken0721 4:eabb7a738ff8 262 }
kenken0721 3:aaa2fde4fafd 263 break;
kenken0721 4:eabb7a738ff8 264 //------------------待機位置1から投てき位置1----------------------------------------
kenken0721 3:aaa2fde4fafd 265 case RED_RECEIVE:
kenken0721 3:aaa2fde4fafd 266 if(crosscount == 0){
kenken0721 3:aaa2fde4fafd 267 directmode = LEFT;
kenken0721 4:eabb7a738ff8 268 }else if(crosscount == 1){
kenken0721 3:aaa2fde4fafd 269 directmode = STOP;
kenken0721 3:aaa2fde4fafd 270 prelinedata = 0;
kenken0721 8:91a72648f312 271 touteki(1.0,195,0);
kenken0721 7:f1a924244b76 272 //syokikanomai2();
kenken0721 4:eabb7a738ff8 273 if(set_flag == false){
kenken0721 3:aaa2fde4fafd 274 directmode = RIGHT;
kenken0721 8:91a72648f312 275 Linecount();
kenken0721 3:aaa2fde4fafd 276 }
kenken0721 3:aaa2fde4fafd 277 }else if(crosscount == 2){
kenken0721 3:aaa2fde4fafd 278 directmode = STOP;
kenken0721 4:eabb7a738ff8 279 syokikanomai2();
kenken0721 4:eabb7a738ff8 280 if(set_flag == true){
kenken0721 4:eabb7a738ff8 281 state = STAND_BY_1;
kenken0721 7:f1a924244b76 282 //taiki_flag = false;
kenken0721 4:eabb7a738ff8 283 crosscount = 0;
kenken0721 8:91a72648f312 284 redthrowing = true;
kenken0721 4:eabb7a738ff8 285 }
kenken0721 3:aaa2fde4fafd 286 }
kenken0721 3:aaa2fde4fafd 287 break;
kenken0721 4:eabb7a738ff8 288 //------------------待機位置1から投てき位置2----------------------------------------
kenken0721 3:aaa2fde4fafd 289 case BLUE_RECEIVE_1:
kenken0721 3:aaa2fde4fafd 290 if(crosscount == 0){
kenken0721 3:aaa2fde4fafd 291 directmode = RIGHT;
kenken0721 3:aaa2fde4fafd 292 }else if(crosscount == 1){
kenken0721 3:aaa2fde4fafd 293 directmode = STRAIGHT;
kenken0721 3:aaa2fde4fafd 294 }else if(crosscount == 2){
kenken0721 3:aaa2fde4fafd 295 directmode = LEFT;
kenken0721 7:f1a924244b76 296 Linecount();
kenken0721 3:aaa2fde4fafd 297 }else if(crosscount == 3){
kenken0721 3:aaa2fde4fafd 298 directmode = STOP;
kenken0721 3:aaa2fde4fafd 299 prelinedata = 0;
kenken0721 4:eabb7a738ff8 300 state = BLUE_RECEIVE_2;
kenken0721 3:aaa2fde4fafd 301 crosscount = 0;
kenken0721 3:aaa2fde4fafd 302 }
kenken0721 3:aaa2fde4fafd 303 break;
kenken0721 4:eabb7a738ff8 304 //------------------待機位置2----------------------------------------------------
kenken0721 3:aaa2fde4fafd 305 case STAND_BY_2:
kenken0721 3:aaa2fde4fafd 306 crosscount = 0;
kenken0721 4:eabb7a738ff8 307 directmode = STOP;
kenken0721 4:eabb7a738ff8 308 if(distance == 1.0){
kenken0721 8:91a72648f312 309 if(redIn == 1.0){
kenken0721 4:eabb7a738ff8 310 buzzer = 1.0;
kenken0721 4:eabb7a738ff8 311 bluecount++;
kenken0721 7:f1a924244b76 312 }else if(micro_switch == 0.0){
kenken0721 4:eabb7a738ff8 313 buzzer = 1.0;
kenken0721 4:eabb7a738ff8 314 yellowcount++;
kenken0721 4:eabb7a738ff8 315 }else{
kenken0721 4:eabb7a738ff8 316 buzzer = 0.0;
kenken0721 4:eabb7a738ff8 317 }
kenken0721 5:c5a2a5cf600d 318 if(bluecount >= 100){
kenken0721 5:c5a2a5cf600d 319 servo_hand.move(hand_tsukami_degree);
kenken0721 5:c5a2a5cf600d 320 servo1.move(hiji_tsukami_degree);
kenken0721 6:ff7fd6556a81 321 servo1.move(hiji_tsukami_degree);
kenken0721 4:eabb7a738ff8 322 }else if(yellowcount >= 500){
kenken0721 5:c5a2a5cf600d 323 air = 0.0;
kenken0721 4:eabb7a738ff8 324 }
kenken0721 5:c5a2a5cf600d 325 }else if(distance == 0.0 && bluecount >= 100){
kenken0721 8:91a72648f312 326 servo2.move(koshi_blue_nage_degree);
kenken0721 8:91a72648f312 327 servo2.move(koshi_blue_nage_degree);
kenken0721 4:eabb7a738ff8 328 state = BLUE_RECEIVE_2;
kenken0721 4:eabb7a738ff8 329 directmode = STOP;
kenken0721 4:eabb7a738ff8 330 bluecount = 0;
kenken0721 4:eabb7a738ff8 331 crosscount = 0;
kenken0721 7:f1a924244b76 332 }else if(distance == 0.0 && yellowcount >= 500){
kenken0721 7:f1a924244b76 333 state = YELLOW_RECEIVE;
kenken0721 8:91a72648f312 334 buzzer = 0.0;
kenken0721 7:f1a924244b76 335 directmode = STOP;
kenken0721 7:f1a924244b76 336 yellowcount = 0;
kenken0721 7:f1a924244b76 337 crosscount = 0;
kenken0721 4:eabb7a738ff8 338 }
kenken0721 3:aaa2fde4fafd 339 break;
kenken0721 4:eabb7a738ff8 340 //------------------投てき位置2---------------------------------------------------
kenken0721 3:aaa2fde4fafd 341 case BLUE_RECEIVE_2:
kenken0721 3:aaa2fde4fafd 342 if(crosscount == 0){
kenken0721 3:aaa2fde4fafd 343 directmode = LEFT;
kenken0721 3:aaa2fde4fafd 344 }else if(crosscount == 1){
kenken0721 5:c5a2a5cf600d 345 directmode = STOP;
kenken0721 5:c5a2a5cf600d 346 prelinedata = 0;
kenken0721 8:91a72648f312 347 touteki(1.0,200,1);
kenken0721 7:f1a924244b76 348 //syokikanomai2();
kenken0721 5:c5a2a5cf600d 349 if(set_flag == false){
kenken0721 5:c5a2a5cf600d 350 directmode = RIGHT;
kenken0721 7:f1a924244b76 351 Linecount();
kenken0721 3:aaa2fde4fafd 352 }
kenken0721 3:aaa2fde4fafd 353 }else if(crosscount == 2){
kenken0721 3:aaa2fde4fafd 354 directmode = STOP;
kenken0721 5:c5a2a5cf600d 355 syokikanomai2();
kenken0721 5:c5a2a5cf600d 356 if(set_flag == true){
kenken0721 5:c5a2a5cf600d 357 state = STAND_BY_2;
kenken0721 7:f1a924244b76 358 //taiki_flag = false;
kenken0721 5:c5a2a5cf600d 359 crosscount = 0;
kenken0721 5:c5a2a5cf600d 360 }
kenken0721 7:f1a924244b76 361 }
kenken0721 3:aaa2fde4fafd 362 break;
kenken0721 4:eabb7a738ff8 363 //------------------投てき位置3---------------------------------------------------
kenken0721 3:aaa2fde4fafd 364 case YELLOW_RECEIVE:
kenken0721 7:f1a924244b76 365 if(crosscount != 5){
kenken0721 3:aaa2fde4fafd 366 directmode = LEFT;
kenken0721 3:aaa2fde4fafd 367 }else{
kenken0721 3:aaa2fde4fafd 368 directmode = STOP;
kenken0721 7:f1a924244b76 369 if(yellow_throw_flag == false){
kenken0721 7:f1a924244b76 370 yellow_throwing();
kenken0721 7:f1a924244b76 371 }else{
kenken0721 7:f1a924244b76 372 touteki(1.0,190,1.0);
kenken0721 7:f1a924244b76 373 syokikanomai2();
kenken0721 7:f1a924244b76 374 }
kenken0721 3:aaa2fde4fafd 375 }
kenken0721 3:aaa2fde4fafd 376 break;
kenken0721 3:aaa2fde4fafd 377 default:
kenken0721 3:aaa2fde4fafd 378 break;
kenken0721 3:aaa2fde4fafd 379 }
kenken0721 4:eabb7a738ff8 380 //--------------進行方向---------------------------------------------------------
kenken0721 3:aaa2fde4fafd 381 switch(directmode){
kenken0721 2:c5996dd62e9c 382 case STOP:
kenken0721 2:c5996dd62e9c 383 Stop(pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 384 break;
kenken0721 2:c5996dd62e9c 385 case STRAIGHT:
kenken0721 2:c5996dd62e9c 386 output = S_pid.compute((double)linedata_1[0]);
kenken0721 2:c5996dd62e9c 387 if(output >= 0){
kenken0721 7:f1a924244b76 388 Straight(power, power + output, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 389 }else {
kenken0721 7:f1a924244b76 390 Straight(power + (-1 * output), power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 391 }
kenken0721 2:c5996dd62e9c 392 break;
kenken0721 2:c5996dd62e9c 393 case RIGHT:
kenken0721 2:c5996dd62e9c 394 output = R_pid.compute((double)linedata_2[0]);
kenken0721 1:f4dbd6b9cc27 395 if(output >= 0){
kenken0721 7:f1a924244b76 396 Right(power, power + output, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 1:f4dbd6b9cc27 397 }else {
kenken0721 7:f1a924244b76 398 Right(power + (-1 * output), power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 399 }
kenken0721 2:c5996dd62e9c 400 break;
kenken0721 2:c5996dd62e9c 401 case LEFT:
kenken0721 2:c5996dd62e9c 402 output = L_pid.compute((double)linedata_3[0]);
kenken0721 2:c5996dd62e9c 403 if(output >= 0){
kenken0721 7:f1a924244b76 404 Left(power, power + output, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 405 }else {
kenken0721 7:f1a924244b76 406 Left(power + (-1 * output), power, pwm_pins, dir_pins_1, dir_pins_2);
kenken0721 2:c5996dd62e9c 407 }
kenken0721 2:c5996dd62e9c 408 break;
kenken0721 2:c5996dd62e9c 409 default:
kenken0721 2:c5996dd62e9c 410 break;
kenken0721 1:f4dbd6b9cc27 411 }
kenken0721 1:f4dbd6b9cc27 412 }
kenken0721 1:f4dbd6b9cc27 413 }
kenken0721 4:eabb7a738ff8 414 pc.printf("xdist = %f \r",x_dist);
kenken0721 4:eabb7a738ff8 415 pc.printf("ydist = %f \r",y_dist);
kenken0721 1:f4dbd6b9cc27 416 pc.printf("output = %lf \n" ,output);
kenken0721 1:f4dbd6b9cc27 417 }
kenken0721 1:f4dbd6b9cc27 418 }
kenken0721 1:f4dbd6b9cc27 419
kenken0721 7:f1a924244b76 420 //---------------初期化----------------------------------------------------------
kenken0721 7:f1a924244b76 421
kenken0721 7:f1a924244b76 422 void yellow_throwing(){
kenken0721 7:f1a924244b76 423 if(yellow_throw_flag == false){
kenken0721 7:f1a924244b76 424 timer.start();
kenken0721 7:f1a924244b76 425 }
kenken0721 7:f1a924244b76 426 int times = timer.read();
kenken0721 8:91a72648f312 427 if(times >= 2.0 && times < 3.0){
kenken0721 8:91a72648f312 428 servo_hand.move(hand_uke_degree);
kenken0721 8:91a72648f312 429 }else if(times >= 3.0 && times < 4.0){
kenken0721 8:91a72648f312 430 servo1.move(hiji_uke_degree);
kenken0721 8:91a72648f312 431 }else if(times >= 4.0 && times < 5.0){
kenken0721 7:f1a924244b76 432 servo_hand.move(hand_tsukami_degree);
kenken0721 8:91a72648f312 433 }else if(times >=5.0 && times <5.5){
kenken0721 7:f1a924244b76 434 servo2.move(koshi_nage_degree);
kenken0721 8:91a72648f312 435 }else if(times >= 5.5){
kenken0721 7:f1a924244b76 436 yellow_throw_flag = true;
kenken0721 7:f1a924244b76 437 timer.stop();
kenken0721 7:f1a924244b76 438 timer.reset();
kenken0721 7:f1a924244b76 439 }
kenken0721 7:f1a924244b76 440 }
kenken0721 7:f1a924244b76 441
kenken0721 4:eabb7a738ff8 442 void syokikanomai(void){
kenken0721 4:eabb7a738ff8 443 syokika_flag = false;
kenken0721 4:eabb7a738ff8 444 while (set_flag==false) {
kenken0721 4:eabb7a738ff8 445 encoder_count= Enc_Arm.read_rotate();
kenken0721 4:eabb7a738ff8 446 servo_hand.move(hand_uke_degree);
kenken0721 4:eabb7a738ff8 447 servo1.move(hiji_nage_degree);//退避
kenken0721 4:eabb7a738ff8 448 servo2.move(koshi_uke_degree);
kenken0721 6:ff7fd6556a81 449 servo1.move(hiji_nage_degree);//退避
kenken0721 6:ff7fd6556a81 450 servo2.move(koshi_uke_degree);
kenken0721 4:eabb7a738ff8 451 motor_dir1=0;
kenken0721 4:eabb7a738ff8 452 motor_dir2=1;
kenken0721 8:91a72648f312 453 motor_pwm=0.12;
kenken0721 7:f1a924244b76 454 if(Enc_Arm.read_z() == 1){
kenken0721 4:eabb7a738ff8 455 syokika_flag=true;
kenken0721 4:eabb7a738ff8 456 buzzer = 1.0;
kenken0721 4:eabb7a738ff8 457 }
kenken0721 4:eabb7a738ff8 458
kenken0721 4:eabb7a738ff8 459 if (syokika_flag==true) {
kenken0721 7:f1a924244b76 460 if(encoder_count == 170){
kenken0721 4:eabb7a738ff8 461 motor_pwm=0;
kenken0721 4:eabb7a738ff8 462 motor_dir1=1;
kenken0721 4:eabb7a738ff8 463 motor_dir2=1;
kenken0721 4:eabb7a738ff8 464 set_flag=true; //投てき後,falseにする.
kenken0721 4:eabb7a738ff8 465 }
kenken0721 4:eabb7a738ff8 466 }
kenken0721 4:eabb7a738ff8 467 }
kenken0721 4:eabb7a738ff8 468 servo1.move(hiji_uke_degree);
kenken0721 4:eabb7a738ff8 469 servo1.move(hiji_uke_degree);
kenken0721 4:eabb7a738ff8 470 }
kenken0721 4:eabb7a738ff8 471
kenken0721 4:eabb7a738ff8 472 void syokikanomai2(void){
kenken0721 4:eabb7a738ff8 473 if(set_flag==false) {
kenken0721 7:f1a924244b76 474 encoder_count= Enc_Arm.read_rotate();
kenken0721 8:91a72648f312 475 servo_hand.move(hand_uke_degree);
kenken0721 8:91a72648f312 476 servo1.move(hiji_nage_degree);//退避
kenken0721 8:91a72648f312 477 servo1.move(hiji_nage_degree);//退避
kenken0721 8:91a72648f312 478 if(yellow_throw_flag == false){
kenken0721 8:91a72648f312 479 servo2.move(koshi_uke_degree);
kenken0721 8:91a72648f312 480 servo2.move(koshi_uke_degree);
kenken0721 7:f1a924244b76 481 }
kenken0721 4:eabb7a738ff8 482 motor_dir1=0;
kenken0721 4:eabb7a738ff8 483 motor_dir2=1;
kenken0721 8:91a72648f312 484 motor_pwm=0.12;
kenken0721 4:eabb7a738ff8 485 if(Enc_Arm.read_z() == 1) {
kenken0721 4:eabb7a738ff8 486 syokika_flag = true;
kenken0721 4:eabb7a738ff8 487 buzzer = 1.0;
kenken0721 4:eabb7a738ff8 488 }
kenken0721 4:eabb7a738ff8 489 if (syokika_flag==true) {
kenken0721 8:91a72648f312 490 int set_pos;
kenken0721 8:91a72648f312 491 if(yellow_throw_flag == true) set_pos = 164;
kenken0721 8:91a72648f312 492 else set_pos = 170;
kenken0721 8:91a72648f312 493 if(encoder_count == set_pos){
kenken0721 4:eabb7a738ff8 494 motor_pwm=0;
kenken0721 4:eabb7a738ff8 495 motor_dir1=1;
kenken0721 4:eabb7a738ff8 496 motor_dir2=1;
kenken0721 8:91a72648f312 497 if(yellow_throw_flag == false){
kenken0721 8:91a72648f312 498 servo_hand.move(hand_uke_degree);
kenken0721 8:91a72648f312 499 servo1.move(hiji_uke_degree);
kenken0721 8:91a72648f312 500 servo1.move(hiji_uke_degree);
kenken0721 8:91a72648f312 501 }else{
kenken0721 8:91a72648f312 502 servo_hand.move(hand_tsukami_degree);
kenken0721 8:91a72648f312 503 servo2.move(koshi_uke_degree);
kenken0721 8:91a72648f312 504 servo2.move(koshi_uke_degree);
kenken0721 8:91a72648f312 505 }
kenken0721 4:eabb7a738ff8 506 set_flag = true; //投てき後,falseにする.
kenken0721 7:f1a924244b76 507 taiki_flag = true;
kenken0721 7:f1a924244b76 508 yellow_throw_flag = false;
kenken0721 4:eabb7a738ff8 509 }
kenken0721 4:eabb7a738ff8 510 }
kenken0721 4:eabb7a738ff8 511 }
kenken0721 4:eabb7a738ff8 512 }
kenken0721 4:eabb7a738ff8 513
kenken0721 6:ff7fd6556a81 514 void touteki(float armpower ,int pos, bool throwing_mode){
kenken0721 7:f1a924244b76 515 led2 = 1.0;
kenken0721 4:eabb7a738ff8 516 if(set_flag == true){
kenken0721 4:eabb7a738ff8 517 timer.start();
kenken0721 4:eabb7a738ff8 518 }
kenken0721 4:eabb7a738ff8 519 int times = timer.read();
kenken0721 7:f1a924244b76 520 if(times >= 2.0 && times < 3.0){
kenken0721 4:eabb7a738ff8 521 servo_hand.move(hand_uke_degree);
kenken0721 7:f1a924244b76 522 led2 = 0.0;
kenken0721 6:ff7fd6556a81 523 }
kenken0721 7:f1a924244b76 524 if(times >= 3.0 && times < 4.0){
kenken0721 7:f1a924244b76 525 servo1.move(hiji_nage_degree);
kenken0721 4:eabb7a738ff8 526 servo1.move(hiji_nage_degree);
kenken0721 4:eabb7a738ff8 527 }
kenken0721 7:f1a924244b76 528 if(times >= 4.0 && times < 6.0){
kenken0721 4:eabb7a738ff8 529 lamp = 0.0;
kenken0721 8:91a72648f312 530 if(set_pos_flag == false){
kenken0721 8:91a72648f312 531 if(Enc_Arm.read_rotate() < pos) {
kenken0721 8:91a72648f312 532 motor_dir1 = 0;
kenken0721 8:91a72648f312 533 motor_dir2 = 1;
kenken0721 8:91a72648f312 534 motor_pwm = 0.15;
kenken0721 8:91a72648f312 535 }else{
kenken0721 8:91a72648f312 536 motor_dir1=1;
kenken0721 8:91a72648f312 537 motor_dir2=1;
kenken0721 8:91a72648f312 538 motor_pwm=0;
kenken0721 8:91a72648f312 539 set_pos_flag = true;
kenken0721 8:91a72648f312 540 }
kenken0721 4:eabb7a738ff8 541 }
kenken0721 4:eabb7a738ff8 542 }
kenken0721 7:f1a924244b76 543
kenken0721 4:eabb7a738ff8 544 //----投てき-------------------------
kenken0721 6:ff7fd6556a81 545 if(throwing_mode == 0.0){
kenken0721 7:f1a924244b76 546 if(times >= 6.0 && times < 7.0){
kenken0721 5:c5a2a5cf600d 547 motor_dir1 = 0;
kenken0721 5:c5a2a5cf600d 548 motor_dir2 = 1;
kenken0721 5:c5a2a5cf600d 549 motor_pwm = armpower;
kenken0721 5:c5a2a5cf600d 550 }
kenken0721 6:ff7fd6556a81 551 }else if(throwing_mode == 1.0){
kenken0721 8:91a72648f312 552 if(times >= 6.0 && times < 6.1){
kenken0721 6:ff7fd6556a81 553 throwing_relay = 1.0;
kenken0721 5:c5a2a5cf600d 554 }else{
kenken0721 8:91a72648f312 555 throwing_relay = 0.0;
kenken0721 5:c5a2a5cf600d 556 }
kenken0721 4:eabb7a738ff8 557 }
kenken0721 7:f1a924244b76 558 if(times >= 7.0 && times <8.0){
kenken0721 4:eabb7a738ff8 559 motor_pwm = 0.0;
kenken0721 8:91a72648f312 560 motor_dir1 = 1;
kenken0721 8:91a72648f312 561 motor_dir2 = 1;
kenken0721 4:eabb7a738ff8 562 buzzer = 0;
kenken0721 4:eabb7a738ff8 563 lamp = 1.0;
kenken0721 8:91a72648f312 564 }else if(times >= 8.0 && yellow_throwing == false){
kenken0721 4:eabb7a738ff8 565 set_flag = false;
kenken0721 8:91a72648f312 566 set_pos_flag = false;
kenken0721 8:91a72648f312 567 timer.reset();
kenken0721 8:91a72648f312 568 timer.stop();
kenken0721 8:91a72648f312 569 }else if(times >= 10.0 && yellow_throw_flag == true){
kenken0721 8:91a72648f312 570 set_flag = false;
kenken0721 8:91a72648f312 571 set_pos_flag = false;
kenken0721 4:eabb7a738ff8 572 timer.reset();
kenken0721 4:eabb7a738ff8 573 timer.stop();
kenken0721 4:eabb7a738ff8 574 }
kenken0721 4:eabb7a738ff8 575 }
kenken0721 4:eabb7a738ff8 576
kenken0721 7:f1a924244b76 577 void Linecount(void){
kenken0721 7:f1a924244b76 578 if(directmode == RIGHT){
kenken0721 7:f1a924244b76 579 if(linecountcheck == false){
kenken0721 7:f1a924244b76 580 tar_x_dist_2 = x_dist;
kenken0721 7:f1a924244b76 581 linecountcheck = true;
kenken0721 7:f1a924244b76 582 }else{
kenken0721 7:f1a924244b76 583 if((x_dist - tar_x_dist_2) > X_STOP_DIST_3){
kenken0721 7:f1a924244b76 584 crosscount++;
kenken0721 7:f1a924244b76 585 linecountcheck = false;
kenken0721 7:f1a924244b76 586 }
kenken0721 7:f1a924244b76 587 }
kenken0721 7:f1a924244b76 588 }else if(directmode == LEFT){
kenken0721 7:f1a924244b76 589 if(linecountcheck == false){
kenken0721 7:f1a924244b76 590 tar_x_dist_2 = x_dist;
kenken0721 7:f1a924244b76 591 linecountcheck = true;
kenken0721 7:f1a924244b76 592 }else{
kenken0721 7:f1a924244b76 593 if((tar_x_dist_2 - x_dist) >= X_STOP_DIST_2){
kenken0721 7:f1a924244b76 594 crosscount++;
kenken0721 7:f1a924244b76 595 linecountcheck = false;
kenken0721 7:f1a924244b76 596 }
kenken0721 7:f1a924244b76 597 }
kenken0721 7:f1a924244b76 598 }
kenken0721 7:f1a924244b76 599 }
kenken0721 7:f1a924244b76 600
kenken0721 2:c5996dd62e9c 601 void LineCheck(int dmode){
kenken0721 2:c5996dd62e9c 602 if(dmode == STRAIGHT){
kenken0721 2:c5996dd62e9c 603 if(linedata_1[1] == 1){
kenken0721 2:c5996dd62e9c 604 ontheline = true;
kenken0721 2:c5996dd62e9c 605 tar_y_dist = y_dist;
kenken0721 2:c5996dd62e9c 606 }
kenken0721 2:c5996dd62e9c 607 if(ontheline == true){
kenken0721 3:aaa2fde4fafd 608 if((y_dist - tar_y_dist) >= Y_STOP_DIST){
kenken0721 2:c5996dd62e9c 609 ontheline = false;
kenken0721 2:c5996dd62e9c 610 crosscount++;
kenken0721 2:c5996dd62e9c 611 }
kenken0721 2:c5996dd62e9c 612 }
kenken0721 2:c5996dd62e9c 613 }else if(dmode == RIGHT){
kenken0721 3:aaa2fde4fafd 614 if(linedata_2[1] == 1){
kenken0721 3:aaa2fde4fafd 615 ontheline = true;
kenken0721 3:aaa2fde4fafd 616 tar_x_dist = x_dist;
kenken0721 3:aaa2fde4fafd 617 }
kenken0721 2:c5996dd62e9c 618 if(ontheline == true){
kenken0721 3:aaa2fde4fafd 619 if((x_dist - tar_x_dist) >= X_STOP_DIST){
kenken0721 2:c5996dd62e9c 620 ontheline = false;
kenken0721 2:c5996dd62e9c 621 crosscount++;
kenken0721 2:c5996dd62e9c 622 }
kenken0721 2:c5996dd62e9c 623 }
kenken0721 2:c5996dd62e9c 624 }else if(dmode == LEFT){
kenken0721 3:aaa2fde4fafd 625 if(linedata_3[1] == 1){
kenken0721 3:aaa2fde4fafd 626 ontheline = true;
kenken0721 3:aaa2fde4fafd 627 tar_x_dist = x_dist;
kenken0721 3:aaa2fde4fafd 628 }
kenken0721 2:c5996dd62e9c 629 if(ontheline == true){
kenken0721 3:aaa2fde4fafd 630 if((tar_x_dist - x_dist) >= X_STOP_DIST){
kenken0721 2:c5996dd62e9c 631 ontheline = false;
kenken0721 2:c5996dd62e9c 632 crosscount++;
kenken0721 2:c5996dd62e9c 633 }
kenken0721 2:c5996dd62e9c 634 }
kenken0721 2:c5996dd62e9c 635 }
kenken0721 2:c5996dd62e9c 636 }
kenken0721 0:f6828b914b1c 637
kenken0721 2:c5996dd62e9c 638 void linecheck(char *buff, int data[2]){
kenken0721 0:f6828b914b1c 639 if(buff[0] == 24){
kenken0721 2:c5996dd62e9c 640 data[0] = 0;
kenken0721 2:c5996dd62e9c 641 data[1] = 0;
kenken0721 0:f6828b914b1c 642 }else if(buff[0] == 56){
kenken0721 2:c5996dd62e9c 643 data[0] = 1;
kenken0721 2:c5996dd62e9c 644 data[1] = 0;
kenken0721 0:f6828b914b1c 645 }else if(buff[0] == 48){
kenken0721 2:c5996dd62e9c 646 data[0] = 2;
kenken0721 2:c5996dd62e9c 647 data[1] = 0;
kenken0721 0:f6828b914b1c 648 }else if(buff[0] == 112){
kenken0721 2:c5996dd62e9c 649 data[0] = 3;
kenken0721 2:c5996dd62e9c 650 data[1] = 0;
kenken0721 0:f6828b914b1c 651 }else if(buff[0] == 96){
kenken0721 2:c5996dd62e9c 652 data[0] = 4;
kenken0721 2:c5996dd62e9c 653 data[1] = 0;
kenken0721 0:f6828b914b1c 654 }else if(buff[0] == 224){
kenken0721 2:c5996dd62e9c 655 data[0] = 5;
kenken0721 2:c5996dd62e9c 656 data[1] = 0;
kenken0721 0:f6828b914b1c 657 }else if(buff[0] == 192){
kenken0721 2:c5996dd62e9c 658 data[0] = 6;
kenken0721 2:c5996dd62e9c 659 data[1] = 0;
kenken0721 0:f6828b914b1c 660 }else if(buff[0] == 128){
kenken0721 2:c5996dd62e9c 661 data[0] = 7;
kenken0721 2:c5996dd62e9c 662 data[1] = 0;
kenken0721 0:f6828b914b1c 663 }else if(buff[0] == 28){
kenken0721 2:c5996dd62e9c 664 data[0] = -1;
kenken0721 2:c5996dd62e9c 665 data[1] = 0;
kenken0721 0:f6828b914b1c 666 }else if(buff[0] == 12){
kenken0721 2:c5996dd62e9c 667 data[0] = -2;
kenken0721 2:c5996dd62e9c 668 data[1] = 0;
kenken0721 0:f6828b914b1c 669 }else if(buff[0] == 14){
kenken0721 2:c5996dd62e9c 670 data[0] = -3;
kenken0721 2:c5996dd62e9c 671 data[1] = 0;
kenken0721 0:f6828b914b1c 672 }else if(buff[0] == 6){
kenken0721 2:c5996dd62e9c 673 data[0] = -4;
kenken0721 2:c5996dd62e9c 674 data[1] = 0;
kenken0721 0:f6828b914b1c 675 }else if(buff[0] == 7){
kenken0721 2:c5996dd62e9c 676 data[0] = -5;
kenken0721 2:c5996dd62e9c 677 data[1] = 0;
kenken0721 0:f6828b914b1c 678 }else if(buff[0] == 3){
kenken0721 2:c5996dd62e9c 679 data[0] = -6;
kenken0721 2:c5996dd62e9c 680 data[1] = 0;
kenken0721 0:f6828b914b1c 681 }else if(buff[0] == 1){
kenken0721 2:c5996dd62e9c 682 data[0] = -7;
kenken0721 2:c5996dd62e9c 683 data[1] = 0;
kenken0721 2:c5996dd62e9c 684 }else if(buff[0] == 255){
kenken0721 2:c5996dd62e9c 685 data[0] = prelinedata;
kenken0721 2:c5996dd62e9c 686 data[1] = 1;
kenken0721 2:c5996dd62e9c 687 }else if(buff[0] == 0){
kenken0721 2:c5996dd62e9c 688 data[0] = prelinedata;
kenken0721 2:c5996dd62e9c 689 data[1] = 0;
kenken0721 0:f6828b914b1c 690 }else{
kenken0721 2:c5996dd62e9c 691 data[0] = prelinedata;
kenken0721 2:c5996dd62e9c 692 data[1] = 0;
kenken0721 0:f6828b914b1c 693 }
kenken0721 2:c5996dd62e9c 694 prelinedata = data[0];
kenken0721 3:aaa2fde4fafd 695 }