linetrace saikyou
Dependencies: RemoteIR TextLCD
Diff: main.cpp
- 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(); // バッテリー残量更新