2005/C5/しょう/壁
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2005/C5/しょう]]
*壁に沿って動くプログラム [#qd1b3229]
task main ()
{
SetSensor (SENSOR_1, SENSOR_TOUCH); //left
SetSensor (SENSOR_3, SENSOR_TOUCH); //right
ClearTimer (0);
while (Timer (0) < 600) //時間制限
{
SetPower(OUT_A+OUT_C, OUT_FULL);
while (SENSOR_1==1 && SENSOR_3==0) //壁に沿っている
{
Off (OUT_A+OUT_C);
OnFwd (OUT_A+OUT_C);
}
while (SENSOR_1==0 && SENSOR_3==0) //壁から離れた
{
Off (OUT_A+OUT_C);
OnFwd (OUT_C);
OnRev (OUT_A);
Wait (10);
OnFwd (OUT_A+OUT_C);
Wait (10);
}
while (SENSOR_1==0 && SENSOR_3==1) //向きがおかしい
{
Off (OUT_A+OUT_C);
OnFwd (OUT_A);
}
if (SENSOR_1==1 && SENSOR_3==1) //曲がり角にぶつかった
{
OnRev (OUT_A+OUT_C);
Wait (15);
OnFwd (OUT_A);
OnRev (OUT_C);
Wait (120);
Off (OUT_A+OUT_C);
}
}
Off (OUT_A+OUT_C);
}
壁に当たって左側のセンサが反応しているときは直進する。センサーが壁から離れたら、壁の方に曲がっていく。両方のセンサーが反応したら壁にぶつかっているので、少し後退して右に約90°曲がる。右側のセンサーのみが反応しているときは逆走しかけているので右に曲がって壁にぶつけて方向を直している。
終了行:
[[2005/C5/しょう]]
*壁に沿って動くプログラム [#qd1b3229]
task main ()
{
SetSensor (SENSOR_1, SENSOR_TOUCH); //left
SetSensor (SENSOR_3, SENSOR_TOUCH); //right
ClearTimer (0);
while (Timer (0) < 600) //時間制限
{
SetPower(OUT_A+OUT_C, OUT_FULL);
while (SENSOR_1==1 && SENSOR_3==0) //壁に沿っている
{
Off (OUT_A+OUT_C);
OnFwd (OUT_A+OUT_C);
}
while (SENSOR_1==0 && SENSOR_3==0) //壁から離れた
{
Off (OUT_A+OUT_C);
OnFwd (OUT_C);
OnRev (OUT_A);
Wait (10);
OnFwd (OUT_A+OUT_C);
Wait (10);
}
while (SENSOR_1==0 && SENSOR_3==1) //向きがおかしい
{
Off (OUT_A+OUT_C);
OnFwd (OUT_A);
}
if (SENSOR_1==1 && SENSOR_3==1) //曲がり角にぶつかった
{
OnRev (OUT_A+OUT_C);
Wait (15);
OnFwd (OUT_A);
OnRev (OUT_C);
Wait (120);
Off (OUT_A+OUT_C);
}
}
Off (OUT_A+OUT_C);
}
壁に当たって左側のセンサが反応しているときは直進する。センサーが壁から離れたら、壁の方に曲がっていく。両方のセンサーが反応したら壁にぶつかっているので、少し後退して右に約90°曲がる。右側のセンサーのみが反応しているときは逆走しかけているので右に曲がって壁にぶつけて方向を直している。
ページ名: