ドローンユニット ゴール感知時に停止
Dependencies: mbed AQM0802 CRotaryEncoder TB6612FNG_Ver1
Revision 20:614b0a0698ea, committed 2020-01-16
- Comitter:
- 1817106
- Date:
- Thu Jan 16 05:34:11 2020 +0000
- Parent:
- 19:1765d729263e
- Commit message:
- test;
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 1765d729263e -r 614b0a0698ea main.cpp --- a/main.cpp Wed Jan 08 02:59:55 2020 +0000 +++ b/main.cpp Thu Jan 16 05:34:11 2020 +0000 @@ -23,11 +23,11 @@ //フォトリフレクタのゲイン(外側に行くにつれ値を何倍させたいか調整する。) #define S_K1 1.0f //float演算させる値には必ずfを付ける #define S_K2 2.0f //2倍 -#define S_K3 2.8f //4倍 +#define S_K3 3.0f //4倍 //ラインセンサ各種制御成分 -#define S_KP 0.53f //ラインセンサ比例成分。大きいほど曲がりやすい -#define S_KD 0.8f //ラインセンサ微分成分。大きいほど急なラインずれに強くなる。 +#define S_KP 0.7f //ラインセンサ比例成分。大きいほど曲がりやすい +#define S_KD 0.9f //ラインセンサ微分成分。大きいほど急なラインずれに強くなる。 //////////☆★☆★☆★☆★☆★////////////// @@ -59,7 +59,7 @@ /////ドローン定義 DigitalOut drone(D3); -long int Drone = 0; +//long int Drone = 0; /////////////////////////////////////// Serial PC(USBTX,USBRX); CRotaryEncoder encoder_a(D1,D0); //モータAのエンコーダ @@ -199,9 +199,11 @@ if(Cross_Flag==1);//交差点の時は何もしない else if((SG_Flag==1)&&(SG_Cnt==0)){//ゴールスタートマーカの時⇒1回目 SG_Cnt=1; + drone=1; }else if((SG_Flag==1)&&(SG_Cnt==1)){//ゴールスタートマーカの時⇒2回目 Machine_Status|=STOP; //機体停止状態へ SG_Cnt=0; + drone=0; } }else{//マーカではなく、誤検知だった場合。 //何もしない @@ -286,10 +288,14 @@ if(!(Machine_Status&STOP)){//マシンが停止状態でなければ if(Machine_Status&RUN_COURSE_LOUT){ //左端センサ振り切れた時 motor_a=-(-TURN_POWER); //左旋回 - motor_b=-(TURN_POWER); + motor_b=-(TURN_POWER); + drone=0; + }else if(Machine_Status&RUN_COURSE_ROUT){ //右端センサ振り切れた時 motor_a=-(TURN_POWER); //右旋回 motor_b=-(-TURN_POWER); + drone=0; + }else if(Sensor_Cnt>=CROSS_JUDGE){//交差点通過中 Cross_Flag=1; motor_a=-0.3;//交差点なので控えめの速度で直進 @@ -333,13 +339,12 @@ lcd.locate(0,0); lcd.print("STOP"); - drone=0; wait(5); Gray=DEFAULT_GRAY; Machine_Speed=DEFAULT_SPEED; } if(Machine_Status&STOP){//機体停止状態の時 - + Gray=DEFAULT_GRAY+((float)Enc_A_Rotate/16000);//センサ閾値調整 sprintf(Gray_Str,"%3.2f",Gray);//速度情報文字列変換 lcd.locate(0,0); @@ -361,9 +366,8 @@ lcd.print(" "); lcd.locate(0,0); lcd.print("GO!!"); - wait(2); + wait(1); - drone=1; Stop_Distance=0; Machine_Status&=0x7F;//ストップ状態解除 }else{//機体走行中であったとき @@ -373,7 +377,7 @@ Cross_Flag=0; Marker_Run_Distance=0;//マーカ通過距離情報リセット - drone=0; + Machine_Status |= STOP;//機体停止状態にする。 lcd.locate(0,0); lcd.print(" ");