Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: RemoteIR TextLCD
Diff: main.cpp
- Revision:
- 22:c6e2a3b9aa14
- Parent:
- 21:68d38e8f64b5
- Child:
- 23:8c862b55fa1f
diff -r 68d38e8f64b5 -r c6e2a3b9aa14 main.cpp
--- a/main.cpp Wed Aug 05 02:39:37 2020 +0000
+++ b/main.cpp Wed Aug 05 07:05:42 2020 +0000
@@ -58,7 +58,7 @@
int beforeMode; // 前回のモード
int flag_sp = 0; // スピード変化フラグ
Timer viewTimer; // スピ―ド変更時に3秒計測タイマー
-float motorSpeed[9] = {0.5, 0.6, 0.7, 0.75, 0.85, 0.95, 0.8, 0.9, 1.0};
+float motorSpeed[9] = {0.5, 0.8, 0.9, 0.75, 0.85, 0.95, 0.8, 0.9, 1.0};
// モーター速度設定(後半はライントレース用)
Mutex mutex; // ミューテックス
@@ -421,7 +421,7 @@
timer.start();
t1=timer.read_ms();
t2=timer.read_ms();
- while(echo.read() == 0&&(t1-t2)<10){
+ while(echo.read() == 0 &&(t1-t2)<10){
t1=timer.read_ms();
led1 = 1;
}
@@ -436,8 +436,8 @@
}
timer.stop(); // 距離計測タイマーストップ
DT = (int)(timer.read_us()*0.01657); // 距離計算
- if(DT > 100){ // 検知範囲外なら100cmに設定
- DT = 100;
+ if(DT > 150){ // 検知範囲外なら100cmに設定
+ DT = 150;
}
timer.reset(); // 距離計測タイマーリセット
led1 = 0;
@@ -446,42 +446,44 @@
/* 障害物検知関数 */
void watchsurrounding(){
+ servo.pulsewidth_us(1450); // サーボを中央位置に戻す
+ ThisThread::sleep_for(90); // 100ms待つ
SC = watch();
if(SC < limit){ // 正面20cm以内に障害物がある場合
run = STOP; // 停止
}
servo.pulsewidth_us(1925); // サーボを左に40度回転
- ThisThread::sleep_for(180); // 250ms待つ
+ ThisThread::sleep_for(200); // 250ms待つ
SLD = watch();
if(SLD < limit){ // 左前20cm以内に障害物がある場合
run = STOP; // 停止
}
servo.pulsewidth_us(2400); // サーボを左に90度回転
- ThisThread::sleep_for(120); // 250ms待つ
+ ThisThread::sleep_for(200); // 250ms待つ
SL = watch();
if(SL < limit){ // 左20cm以内に障害物がある場合
run = STOP; // 停止
}
servo.pulsewidth_us(1450);
- ThisThread::sleep_for(120);
+ ThisThread::sleep_for(90);
SC = watch();
if(SC < limit){
run = STOP;
}
servo.pulsewidth_us(925); // サーボを右に40度回転
- ThisThread::sleep_for(190); // 250ms待つ
+ ThisThread::sleep_for(200); // 250ms待つ
SRD = watch();
if(SRD < limit){ // 右前20cm以内に障害物がある場合
run = STOP; // 停止
}
servo.pulsewidth_us(500); // サーボを右に90度回転
- ThisThread::sleep_for(120); // 250ms待つ
+ ThisThread::sleep_for(200); // 250ms待つ
SR = watch();
if(SR < limit){ // 右20cm以内に障害物がある場合
run = STOP; // 停止
}
servo.pulsewidth_us(1450); // サーボを中央位置に戻す
- ThisThread::sleep_for(120); // 100ms待つ
+ ThisThread::sleep_for(80); // 100ms待つ
if(SC < limit || SLD < limit || SL < limit || SRD < limit || SR < limit){ // 20cm以内に障害物を検知した場合
flag_a = 1; // 障害物有無フラグに1をセット
}