[[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


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS