ドローンユニット ゴール感知時に停止

Dependencies:   mbed AQM0802 CRotaryEncoder TB6612FNG_Ver1

Files at this revision

API Documentation at this revision

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("     ");