2

Dependencies:   RemoteIR TextLCD

Revision:
71:192af47a260d
Parent:
70:04798984630c
Child:
72:d389adc0c780
--- a/main.cpp	Wed Sep 09 08:26:32 2020 +0000
+++ b/main.cpp	Fri Sep 11 00:49:21 2020 +0000
@@ -4,8 +4,8 @@
  */
  
  /*
- Version    0.12
- Date       2020/09/09
+ Version    0.13
+ Date       2020/09/10
  Uploader   Tomotsugu Ogawa
  
  更新するときにここも変える!
@@ -194,6 +194,7 @@
 int flag_a = 0;         // 障害物有無のフラグ
 int limit = 25;   // 障害物の距離のリミット(単位:cm)
 int backlimit = 20;
+int sidelimit = 18;
 int far;                // 最も遠い距離
 int houkou;             // 進行方向(1:前 2:左 3:右)
 int t1 = 0;
@@ -339,6 +340,23 @@
             viewTimer.reset();              // タイマーリセット
             display();                      // ディスプレイ表示
         }
+        switch(flag_sp){
+            case 1:
+            limit = 25;
+            backlimit = 20;
+            sidelimit = 18;
+            break;
+        case 2:
+            limit = 30;
+            backlimit = 18;
+            sidelimit = 21;
+            break;
+        case 3:
+            limit = 35;
+            backlimit = 15;
+            sidelimit = 24;
+            break;
+        }
         ThisThread::sleep_for(90);          // 90ms待つ
     }
 }
@@ -350,20 +368,20 @@
         if(mode != LINE_TRACE){             // スピード変更フラグが2より大きいなら
             flag_sp %= 3;   // スピード変更フラグ調整
         }
-        switch(flag_sp){
-            case 1:
-            limit = 25;
-            backlimit = 20;
-            break;
-        case 2:
-            limit = 28;
-            backlimit = 18;
-            break;
-        case 3:
-            limit = 32;
-            backlimit = 15;
-            break;
-        }
+        //switch(flag_sp){
+//            case 1:
+//            limit = 25;
+//            backlimit = 20;
+//            break;
+//        case 2:
+//            limit = 30;
+//            backlimit = 18;
+//            break;
+//        case 3:
+//            limit = 35;
+//            backlimit = 15;
+//            break;
+//        }
         switch(run){
             /* 前進 */
             case ADVANCE:
@@ -550,7 +568,7 @@
                 run = STOP;
             }                
             watchsurrounding5();
-            if(SC < 25 && SLD < 37 && SL < 30 && SRD < 37 && SR < 30){   // 全方向に障害物がある場合
+            if(SC < 27 && SLD < 38 && SL < 31 && SRD < 38 && SR < 31){   // 全方向に障害物がある場合
                 run = A1LEFT;                  // 左折
                 cnt_kyori = 0;
                 kyori = watch();
@@ -695,7 +713,7 @@
     servo.pulsewidth_us(1930);      // サーボを左に40度回転
     ThisThread::sleep_for(100);    
     SLD = watch();
-    if(SLD < 18){                // 左前20cm以内に障害物がある場合
+    if(SLD < sidelimit){                // 左前20cm以内に障害物がある場合
         run = STOP;
         ThisThread::sleep_for(90);
         run = BACK;
@@ -727,7 +745,7 @@
     servo.pulsewidth_us(920);       // サーボを右に40度回転
     ThisThread::sleep_for(100);   
     SRD = watch();
-    if(SRD < 18){                // 右前20cm以内に障害物がある場合
+    if(SRD < sidelimit){                // 右前20cm以内に障害物がある場合
         run = STOP;              // 停止
         ThisThread::sleep_for(90);
         run = BACK;
@@ -854,7 +872,7 @@
 /* バッテリー残量更新関数 */
 void bChange(){
     //pc.printf("                                                                              bChange1\r\n");
-    b10[k++] = (int)(((battery.read() * 3.3 - MIN_V)/0.7)*10+0.5)*10;
+    b10[k++] = (int)(((battery.read() * 3.3 - MIN_V)/0.8)*10+0.5)*10;
     if(k == 10){
         k = 0;
     }
@@ -863,6 +881,9 @@
         if(b<b10[i] && b10[i]<=100){
             b = b10[i];
         }
+        else if(b10[i] > 100){
+            b = 100;
+        }       
     }
     
     if(b <= 0){                      // バッテリー残量0%なら全ての機能停止