linetrace saikyou

Dependencies:   RemoteIR TextLCD

Revision:
51:1baf4407f384
Parent:
50:ee78382fd399
Child:
52:c868403753e8
--- a/main.cpp	Wed Sep 02 06:14:47 2020 +0000
+++ b/main.cpp	Wed Sep 02 06:37:27 2020 +0000
@@ -44,6 +44,7 @@
 #define     VF          1
 #define     REVERSE     0.5
 
+#define     MBED02      0.719       //Mbed02号機の左右のモーター速度比(R:L = 1: 0.719)
 #define     MBED04      0.781       //Mbed04号機の左右のモーター速度比(R:L = 1: 0.781)
 #define     MBED05      0.953       //Mbed05号機の左右のモーター速度比(R:L = 1: 0.953)
 #define     MBED07      1
@@ -105,10 +106,9 @@
 I2C         i2c_lcd(p28,p27);   // LCD(tx, rx)
 
 /* 変数宣言 */
-int mode;                   // 操作モード
+MODE mode;                   // 操作モード
 int run;                    // 走行状態
-int beforeRun = STOP;       // 前回の走行状態
-int beforeMode;             // 前回のモード
+MODE beforeMode;             // 前回のモード
 int flag_sp = 0;            // スピード変化フラグ
 Timer viewTimer;            // スピ―ド変更時に3秒計測タイマー
 
@@ -326,6 +326,9 @@
 void motor(/*void const *argument*/){
     while(1){
         /* 走行状態の場合分け */
+        if(mode != LINE_TRACE){             // スピード変更フラグが2より大きいなら
+            flag_sp %= 3;   // スピード変更フラグ調整
+        }
         switch(run){
             /* 前進 */
             case ADVANCE:
@@ -375,9 +378,9 @@
                 motorL2 = 0.36;
                 break;
         }
-        if(flag_sp > VERYFAST){             // スピード変更フラグが2より大きいなら
+        /*if(flag_sp > VERYFAST){             // スピード変更フラグが2より大きいなら
             flag_sp %= 3;   // スピード変更フラグ調整
-        }
+        }*/
         ThisThread::sleep_for(3);          // 30ms待つ
     }
 }
@@ -419,39 +422,32 @@
         switch(sensArray[sensD]){
             case 1:
                 flag_sp = flag_sp % 3 + 6;
-                beforeRun = run;
                 run = ADVANCE;      // 高速で前進
                 break;
             case 2:
                 flag_sp = flag_sp % 3 + 3;
-                beforeRun = run;
 //                run = RIGHT;        // 低速で右折
                 run = LT_R;        // 低速で右折
                 break;
             case 3:
                 flag_sp = flag_sp % 3 + 3;
-                beforeRun = run;
 //                run = LEFT;         // 低速で左折
                 run = LT_L;         // 低速で左折
                 break;
             case 4:
                 flag_sp = flag_sp % 3;
-                beforeRun = run;
                 run = RIGHT;        // 中速で右折
                 break;
             case 5:
                 flag_sp = flag_sp % 3;
-                beforeRun = run;
                 run = LEFT;         // 中速で左折
                 break;
             case 6:
                 flag_sp = flag_sp % 3 + 6;
-                beforeRun = run;
                 run = RIGHT;        // 高速で右折
                 break;
             case 7:
                 flag_sp = flag_sp % 3 + 6;
-                beforeRun = run;
                 run = LEFT;         // 高速で左折
                 break;
             default:
@@ -782,7 +778,9 @@
 /* バッテリー残量更新関数 */
 void bChange(){
     //pc.printf("                                                                              bChange1\r\n");
-    b = (int)(((battery.read() * 3.3 - MIN_V)/0.67)*10+0.5)*10;
+    if(run == STOP){
+        b = (int)((((battery.read() * 3.3 - MIN_V)/0.67)*10+0.5)*10);
+    }
     if(b <= 0){                      // バッテリー残量0%なら全ての機能停止
         b = 0;
         //lcd.setBacklight(TextLCD::LightOff);
@@ -1216,6 +1214,7 @@
         //*-*-*-5("+++++++++++++++++succed rec begin+++++++++++++++++++++\r\n");
         //*-*-*-5("%s",webdata);
         //*-*-*-5("+++++++++++++++++succed rec end+++++++++++++++++++++\r\n");
+        beforeMode = mode;
         if( strstr(webdata, "Normal") != NULL ) {
             //*-*-*-5("++++++++++++++++++Normal++++++++++++++++++++");
             mode = SPEED;       // スピードモード
@@ -1234,8 +1233,6 @@
             flag_sp = 1;
             display();          // ディスプレイ表示
             mode = beforeMode;  // 現在のモードに前回のモードを設定
-        }else{
-            beforeMode = mode;
         }
         if( strstr(webdata, "GO") != NULL ) {
             //*-*-*-5("+++++++++++++++++前進+++++++++++++++++++++\r\n");
@@ -1440,7 +1437,7 @@
     lcd.setBacklight(TextLCD::LightOn);  // バックライトON
     lcd.setAddress(0,1);
     lcd.printf("Mode:SetUp");
-    display();              // ディスプレイ表示
+    //display();              // ディスプレイ表示
     
     while(1){
         bChange();          // バッテリー残量更新