2009a/A8/課題2右/障害物を運ぶ(白石)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2009a/A8/課題2右]]
#define migi 40
#define hidari 50
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int flag=0;
while(flag<36){ //36回交差点を通過して終了
if(SENSOR_1>hidari){ //ライントレース
if(SENSOR_3>migi)
{OnFwd(OUT_A+OUT_C);}
else {OnFwd(OUT_A);
OnRev(OUT_C);}
}
else{
if (SENSOR_3>migi){OnFwd(OUT_C);
OnRev(OUT_A);}
else{OnFwd(OUT_A+OUT_C);
flag++;} //交差点を通過したらflagに1足す
}
if(SENSOR_2==1) //障害物に触れたら
{
OnRev(OUT_B);Wait(50); //枠を下げる
Off(OUT_B);
OnFwd(OUT_A+OUT_C);Wait(90);
flag++; //flagに1足す
until((SENSOR_1<hidari)&&(SENSOR_3<migi)){ //光センサーがどちらも黒になるまでライントレース
if(SENSOR_1>hidari){
if(SENSOR_3>migi){OnFwd(OUT_A+OUT_C);}
else {OnFwd(OUT_A);OnRev(OUT_C);}
}
else{
if (SENSOR_3>migi){OnFwd(OUT_C);OnRev(OUT_A);}//もしどちらも黒なら以下の命令を実行
}
}
Off(OUT_A+OUT_C);Wait(100); //枠をあげる
OnRev(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_B);Wait(50);
Off(OUT_B);
OnRev(OUT_A+OUT_C);Wait(25); //障害物を迂回する
Off(OUT_A+OUT_C);Wait(50);
OnRev(OUT_A);
OnFwd(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A+OUT_C);Wait(180);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A+OUT_C);Wait(330);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A+OUT_C);Wait(180);
Off(OUT_A+OUT_C);Wait(50);
OnRev(OUT_A);
OnFwd(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnRev(OUT_A+OUT_C);Wait(40);
Off(OUT_A+OUT_C);Wait(50);
flag++; //flagに1足す
}
}
Off(OUT_A+OUT_C);}
終了行:
[[2009a/A8/課題2右]]
#define migi 40
#define hidari 50
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int flag=0;
while(flag<36){ //36回交差点を通過して終了
if(SENSOR_1>hidari){ //ライントレース
if(SENSOR_3>migi)
{OnFwd(OUT_A+OUT_C);}
else {OnFwd(OUT_A);
OnRev(OUT_C);}
}
else{
if (SENSOR_3>migi){OnFwd(OUT_C);
OnRev(OUT_A);}
else{OnFwd(OUT_A+OUT_C);
flag++;} //交差点を通過したらflagに1足す
}
if(SENSOR_2==1) //障害物に触れたら
{
OnRev(OUT_B);Wait(50); //枠を下げる
Off(OUT_B);
OnFwd(OUT_A+OUT_C);Wait(90);
flag++; //flagに1足す
until((SENSOR_1<hidari)&&(SENSOR_3<migi)){ //光センサーがどちらも黒になるまでライントレース
if(SENSOR_1>hidari){
if(SENSOR_3>migi){OnFwd(OUT_A+OUT_C);}
else {OnFwd(OUT_A);OnRev(OUT_C);}
}
else{
if (SENSOR_3>migi){OnFwd(OUT_C);OnRev(OUT_A);}//もしどちらも黒なら以下の命令を実行
}
}
Off(OUT_A+OUT_C);Wait(100); //枠をあげる
OnRev(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_B);Wait(50);
Off(OUT_B);
OnRev(OUT_A+OUT_C);Wait(25); //障害物を迂回する
Off(OUT_A+OUT_C);Wait(50);
OnRev(OUT_A);
OnFwd(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A+OUT_C);Wait(180);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A+OUT_C);Wait(330);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A);
OnRev(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnFwd(OUT_A+OUT_C);Wait(180);
Off(OUT_A+OUT_C);Wait(50);
OnRev(OUT_A);
OnFwd(OUT_C);Wait(90);
Off(OUT_A+OUT_C);Wait(50);
OnRev(OUT_A+OUT_C);Wait(40);
Off(OUT_A+OUT_C);Wait(50);
flag++; //flagに1足す
}
}
Off(OUT_A+OUT_C);}
ページ名: