2004/A1/練習問題8班4
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
** 光を追いかけるロボット [#rc8e8a2f]
Programed by 体調 ~
int max;
int time;
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
max = SENSOR_2;
ClearTimer(0);
time = Timer(0);
while(Timer(0) <= 44)
{
OnFwd(OUT_A);
OnRev(OUT_C);
if(SENSOR_2 > max)
{
ClearTimer(1);
max = SENSOR_2 ;
}
else
{
max = max;
time = Timer(1);
}
}
ClearTimer(1);
while(Timer(1) <= time)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
OnFwd(OUT_A);
while(true)
{
OnFwd(OUT_A+OUT_C);
if(SENSOR_2 < max - 3)
{
Off(OUT_C);
ClearTimer(2);
until((SENSOR_2 >= max - 3) || (Timer(2) == 4));
if(SENSOR_2 < max - 3)
{
Off(OUT_A);
OnFwd(OUT_C);
until(SENSOR_2 >= max - 3);
OnFwd(OUT_A);
}
}
}
}
このプログラムはRCXが一回転した後もっとも明るかった方向に逆回りで戻り、その光を追いかけるプログラムです。
回転する間、RCXの動きには変化はありませんが、光センサーの値がそれまでの最大値より大きければタイマー1をクリアーするようになっています。そして、一回転し終わったら、そのタイマー1の値だけ戻ります。その後は、その光の方向へ進み、感知した光の最大値より暗くなれば首を振り、その光を探します。 Written by 体調
終了行:
** 光を追いかけるロボット [#rc8e8a2f]
Programed by 体調 ~
int max;
int time;
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
max = SENSOR_2;
ClearTimer(0);
time = Timer(0);
while(Timer(0) <= 44)
{
OnFwd(OUT_A);
OnRev(OUT_C);
if(SENSOR_2 > max)
{
ClearTimer(1);
max = SENSOR_2 ;
}
else
{
max = max;
time = Timer(1);
}
}
ClearTimer(1);
while(Timer(1) <= time)
{
OnFwd(OUT_C);
OnRev(OUT_A);
}
OnFwd(OUT_A);
while(true)
{
OnFwd(OUT_A+OUT_C);
if(SENSOR_2 < max - 3)
{
Off(OUT_C);
ClearTimer(2);
until((SENSOR_2 >= max - 3) || (Timer(2) == 4));
if(SENSOR_2 < max - 3)
{
Off(OUT_A);
OnFwd(OUT_C);
until(SENSOR_2 >= max - 3);
OnFwd(OUT_A);
}
}
}
}
このプログラムはRCXが一回転した後もっとも明るかった方向に逆回りで戻り、その光を追いかけるプログラムです。
回転する間、RCXの動きには変化はありませんが、光センサーの値がそれまでの最大値より大きければタイマー1をクリアーするようになっています。そして、一回転し終わったら、そのタイマー1の値だけ戻ります。その後は、その光の方向へ進み、感知した光の最大値より暗くなれば首を振り、その光を探します。 Written by 体調
ページ名: