- 追加された行はこの色です。
- 削除された行はこの色です。
[[2005/C2/どみ]]
*光を追いかけるロボット [#p27993c0]
int l = 0; //明るさ(初期値0)
int t;
task main() {
SetSensor(SENSOR_1,SENSOR_LIGHT); //左光センサ
SetSensor(SENSOR_3,SENSOR_LIGHT); //右光センサ
ClearTimer(0); //1周の時間を計る
ClearTimer(1); //明るい場所からの時間
OnFwd(OUT_A); //懐中電灯探し
OnRev(OUT_C);
while (FastTimer(0) < 800) {
if (SENSOR_1 > l) { //センサの値が最大値を超えたとき
l = SENSOR_1; //最大値を上書き
ClearTimer(1); //タイマーをリセット
}
}
Off(OUT_A+OUT_C);
t = FastTimer(1); //明るさが最大になった点までの回転時間を設定
OnFwd(OUT_C);
OnRev(OUT_A);
Wait(t);
Off(OUT_A+OUT_C); //ここまでで光の方向を向く
while(true) {
OnFwd(OUT_A+OUT_C); //前進
Wait(10);
if (SENSOR_1 > SENSOR_3) { //左センサの方が明るいとき
Off(OUT_A); //左折
} else { //右センサの方が明るいとき
Off(OUT_C); //右折
}
Wait(30);
}
}
*ロボットについて [#oa92ff30]
キャタピラのロボットに光センサを2つつけたもの。センサは前から見てハの字になるようにセットしてある。
*プログラムについて [#q9e687dc]
最初に1回転して懐中電灯の明かりを探す。ここではタイマーを利用して、しっかり懐中電灯の方向を向くようにした。懐中電灯を探し出したら、前進しながら左右のセンサの値を比較し、明るい方向へと曲がる。しかし、懐中電灯が突然後ろに行ったりすると対応できなくなるのが弱点。
*コメントをお願いします [#h6d5a86c]
#comment