linetrace saikyou
Dependencies: RemoteIR TextLCD
Diff: main.cpp
- 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); // サーボを中央位置に戻す