障害物回避走行プログラム

Files at this revision

API Documentation at this revision

Comitter:
tomotsugu
Date:
Mon Jul 27 05:30:43 2020 +0000
Parent:
10:8f933ed27db0
Commit message:
avoidance

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Jul 27 05:01:04 2020 +0000
+++ b/main.cpp	Mon Jul 27 05:30:43 2020 +0000
@@ -37,9 +37,9 @@
 /* 超音波センサ関数 */
 int watch(){
     trig = 0;
-    thread_sleep_for(0.5);          // 5ms待つ
+    ThisThread::sleep_for(5);          // 5ms待つ
     trig = 1;
-    thread_sleep_for(1.5);          // 15ms待つ
+    ThisThread::sleep_for(15);          // 15ms待つ
     trig = 0;
     while(echo.read() == 0){
     }
@@ -52,7 +52,6 @@
         DT = 400;
     }
     timer.reset();                  // 距離計測タイマーリセット
-    thread_sleep_for(3);            // 30ms待つ
     return DT;
 }
 
@@ -63,33 +62,33 @@
         run = STOP;                 // 停止
     }
     servo.pulsewidth_us(1925);      // サーボを左に40度回転
-    thread_sleep_for(25);           // 250ms待つ
+    ThisThread::sleep_for(250);     // 250ms待つ
     SLD = watch();
     if(SLD < limit){                // 左前20cm以内に障害物がある場合
         run = STOP;                 // 停止
     }
     servo.pulsewidth_us(2400);      // サーボを左に90度回転
-    thread_sleep_for(25);           // 250ms待つ
+    ThisThread::sleep_for(250);     // 250ms待つ
     SL = watch();
     if(SL < limit){                 // 左20cm以内に障害物がある場合
         run = STOP;                 // 停止
     }
     servo.pulsewidth_us(1450);
-    thread_sleep_for(10);
+    ThisThread::sleep_for(100);     // 100ms待つ
     servo.pulsewidth_us(925);       // サーボを右に40度回転
-    thread_sleep_for(25);           // 250ms待つ
+    ThisThread::sleep_for(250);     // 250ms待つ
     SRD = watch();
     if(SRD < limit){                // 右前20cm以内に障害物がある場合
         run = STOP;                 // 停止
     }
     servo.pulsewidth_us(500);       // サーボを右に90度回転
-    thread_sleep_for(25);           // 250ms待つ
+    ThisThread::sleep_for(250);     // 250ms待つ
     SR = watch();
     if(SR < limit){                 // 右20cm以内に障害物がある場合
         run = STOP;                 // 停止
     }
     servo.pulsewidth_us(1450);      // サーボを中央位置に戻す
-    thread_sleep_for(10);           // 100ms待つ
+    ThisThread::sleep_for(100);     // 100ms待つ
     if(SC < limit || SLD < limit || SL < limit || SRD < limit || SR < limit){ // 20cm以内に障害物を検知した場合
         flag = 1;                   // フラグに1をセット
     }
@@ -98,7 +97,6 @@
 /* 障害物回避走行 */
 void avoidance(void const *argument){
     while(1){
-        watchsurrounding();
         if(flag == 0){                      // 障害物がない場合
             run = ADVANCE;                  // 前進
         }
@@ -176,12 +174,13 @@
             }
         }
         flag = 0;                   // フラグを0にセット
+        watchsurrounding();
     }
 }    
 
 int main()
 {
-  Thread thread1(avoidance,NULL,osPriorityHigh);
+  Thread thread1(avoidance,NULL,osPriorityAboveNormal);
   while(true){
   }
 }      
\ No newline at end of file