光を追いかけるロボット

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 体調


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-02-22 (火) 15:17:17 (5290d)