linetrace saikyou

Dependencies:   RemoteIR TextLCD

Revision:
52:c868403753e8
Parent:
51:1baf4407f384
Child:
53:debc8879ba5d
--- a/main.cpp	Wed Sep 02 06:37:27 2020 +0000
+++ b/main.cpp	Wed Sep 02 06:56:39 2020 +0000
@@ -354,7 +354,7 @@
             /* 後退 */
             case BACK:
                 motorR1 = LOW;                  // 右前進モーターOFF
-                motorR2 = motorSpeedR2[flag_sp] + 0.02;  // 右後退モーターON
+                motorR2 = motorSpeedR2[flag_sp];  // 右後退モーターON
                 motorL1 = LOW;                  // 左前進モーターOFF
                 motorL2 = motorSpeedL2[flag_sp];  // 左後退モーターON
                 break;
@@ -365,17 +365,29 @@
                 motorL1 = LOW;                  // 左前進モーターOFF
                 motorL2 = LOW;                  // 左後退モーターOFF
                 break;
-            case ARIGHT:
+            case A1RIGHT:
                 motorR1 = LOW;
-                motorR2 = 0.38;
-                motorL1 = 0.36;
+                motorR2 = 0.55;
+                motorL1 = 0.57;
                 motorL2 = LOW;
                 break;
-            case ALEFT:
-                motorR1 = 0.38;
+            case A2LEFT:
+                motorR1 = 0.57;
                 motorR2 = LOW;
                 motorL1 = LOW;
-                motorL2 = 0.36;
+                motorL2 = 0.55;
+                break;
+            case A2RIGHT:
+                motorR1 = LOW;
+                motorR2 = 0.33;
+                motorL1 = 0.35;
+                motorL2 = LOW;
+                break;
+            case A2LEFT:
+                motorR1 = 0.35;
+                motorR2 = LOW;
+                motorL1 = LOW;
+                motorL2 = 0.33;
                 break;
         }
         /*if(flag_sp > VERYFAST){             // スピード変更フラグが2より大きいなら
@@ -513,8 +525,8 @@
             }                
             watchsurrounding5();
             if(SC < limit && SLD < limit && SL < limit && SRD < limit && SR < limit){   // 全方向に障害物がある場合
-                run = ALEFT;                  // 左折                   
-                while(i < 20){               // 進行方向確認 
+                run = A1LEFT;                  // 左折                   
+                while(i < 15){               // 進行方向確認 
                     if(watch() > limit){    
                         break;
                     }else{                   
@@ -559,7 +571,7 @@
                         }
                         break;
                     case 2:                            // 左の場合                 
-                        run = ALEFT;                    // 左折
+                        run = A1LEFT;                    // 左折
                         while(i < 15){                 // 進行方向確認
                             if(watch() > (far - 2)){   // 正面の計測距離と最も遠い距離が一致したら(誤差-2cm)
                                 break;                   // ループ+  
@@ -570,7 +582,7 @@
                         run = ADVANCE;                    // 停止
                         break;
                     case 3:                            // 右の場合      
-                        run = ARIGHT;                   // 右折
+                        run = A1RIGHT;                   // 右折
                         while(i < 15){                 // 進行方向確認
                             if(watch() > (far - 2)){   // 正面の計測距離と最も遠い距離が一致したら(誤差-2cm)
                                 break;                   // ループ+  
@@ -585,12 +597,12 @@
         }
         flag_a = 0;                   // 障害物有無フラグを0にセット
         if(SLD < 30 && SRD > 30){                     // 正面15cm以内に障害物が現れた場合
-                run = ARIGHT;                 // 右折
-                ThisThread::sleep_for(110);
+                run = A2RIGHT;                 // 右折
+                ThisThread::sleep_for(100);
                 run = ADVANCE;
         }else if(SRD < 30 && SLD > 30){
-                run = ALEFT;                  // 左折
-                ThisThread::sleep_for(110);
+                run = A2LEFT;                  // 左折
+                ThisThread::sleep_for(100);
                 run = ADVANCE;
         }
     }
@@ -650,8 +662,8 @@
         ThisThread::sleep_for(90);
         run = BACK;
         ThisThread::sleep_for(150);
-        run = ARIGHT;
-        ThisThread::sleep_for(120);
+        run = A2RIGHT;
+        ThisThread::sleep_for(130);
         return;
     }
     servo.pulsewidth_us(1425);
@@ -672,8 +684,8 @@
         ThisThread::sleep_for(90);
         run = BACK;
         ThisThread::sleep_for(150);
-        run = ALEFT;
-        ThisThread::sleep_for(120);
+        run = A2LEFT;
+        ThisThread::sleep_for(130);
         return;
     }
     servo.pulsewidth_us(1425);      // サーボを中央位置に戻す