ボタンを押すと、 バッテリ更新を停止し、 他のボタンもロックさせる

Dependencies:   RemoteIR TextLCD

Revision:
21:68d38e8f64b5
Parent:
20:02bb875a9b13
Child:
22:c6e2a3b9aa14
diff -r 02bb875a9b13 -r 68d38e8f64b5 main.cpp
--- a/main.cpp	Wed Aug 05 02:31:16 2020 +0000
+++ b/main.cpp	Wed Aug 05 02:39:37 2020 +0000
@@ -412,35 +412,34 @@
 
 /* 距離計測関数 */
 int watch(){
-    trig = 0;
-    ThisThread::sleep_for(5);       // 5ms待つ
-    trig = 1;
-    ThisThread::sleep_for(15);      // 15ms待つ
-    trig = 0;
-    timer.start();
-    t1=timer.read_ms();
-    t2=timer.read_ms();
-    while(echo.read() == 0&&(t1-t2)<10){
+    do{
+        trig = 0;
+        ThisThread::sleep_for(5);       // 5ms待つ
+        trig = 1;
+        ThisThread::sleep_for(15);      // 15ms待つ
+        trig = 0;
+        timer.start();
         t1=timer.read_ms();
-        led1 = 1;
+        t2=timer.read_ms();
+        while(echo.read() == 0&&(t1-t2)<10){
+            t1=timer.read_ms();
+            led1 = 1;
+        }
+        timer.stop();
+        timer.reset();
+        if((t1-t2) >= 10){
+        run = STOP;
+        }
+    }while((t1-t2) >= 10);
+    timer.start();                  // 距離計測タイマースタート
+    while(echo.read() == 1){
     }
-    timer.stop();
-    timer.reset();
-    if((t1-t2)<10){
-        timer.start();                  // 距離計測タイマースタート
-        while(echo.read() == 1){
-        }
-        timer.stop();                   // 距離計測タイマーストップ
-        DT = (int)(timer.read_us()*0.01657);   // 距離計算
-        if(DT > 100){                   // 検知範囲外なら100cmに設定
-            DT = 100;
-        }
-        timer.reset();                  // 距離計測タイマーリセット
+    timer.stop();                   // 距離計測タイマーストップ
+    DT = (int)(timer.read_us()*0.01657);   // 距離計算
+    if(DT > 100){                   // 検知範囲外なら100cmに設定
+        DT = 100;
     }
-
-    if((t1-t2)>=10){
-        run = STOP;
-    }
+    timer.reset();                  // 距離計測タイマーリセット
     led1 = 0;
     return DT;
 }