#contents

*目標 [#e227aa1a]
半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作。

*ロボット本体 [#lfcf5fe1]
課題2とほぼ同じ。[[課題2ロボット:http://yakushi.shinshu-u.ac.jp/robotics/?2015a%2FMember%2Fshuwachan%2FMission2#l5d3a1be]]

変更点はライントレーサーの向き。
変更点はライントレーサーの向きを前向きにして、前方の明るさを認識できる様にした。

&ref(IMG_0607.JPG);
*プログラム [#g973589c]

**定義 [#j3a73b79]
旋回のみ。
 #define turn_left OnFwd(OUT_C);OnRev(OUT_A)// 左旋回
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C)// 右旋回

**プログラム [#q7e1d0ea]
360度以上回転して明るさの最大値を探し、その方向を向く。そして、ボールをシュートする。

 task main()
 
 {
     SetSensor(SENSOR_3,SENSOR_LIGHT); 
 
	int lightsensor=0; // ライトセンサーの値を入力
	int d_max=0; // 最大値までの時間を入力
 
	ClearTimer(0); // タイマーをリセット
	turn_left; //旋回始め
 
	while (FastTimer(0) < 330) { // 設定した秒数旋回する
 
		if (SENSOR_3 > lightsensor){ // 明るさの最大値を探す
			lightsensor=SENSOR_3;
			d_max=FastTimer(0); 
		if (SENSOR_3 > lightsensor){ // センサーの最大値を超えたら
			lightsensor=SENSOR_3; // 明るさの値を更新し
			d_max=FastTimer(0); // 時間も更新
			}
	}
 
	Off(OUT_AC);Wait(100);
	
         turn_right; // スタート位置に戻る
	Wait(330);
	Off(OUT_AC);
	
         turn_left;
	Wait(d_max); // スタート位置から最大値までの秒数分、旋回
	Off(OUT_AC);
 
	OnRev(OUT_B); Wait(90); // アームを開く
	Off(OUT_B);
	OnFwd(OUT_AC); Wait(50); // ボールをシュート
	OnRev(OUT_AC); Wait(50);
	Off(OUT_AC);
 }

*考察・感想 [#q423d21b]
今回の課題は前回のロボットをほぼそのまま使えたので良かった。ラインをトレースするだけでなく光に向かって走行できることがわかった。最大値を探すということはいいアイディアだと思った。
今回の課題は前回のロボットをほぼそのまま使えたので良かった。明るさの最大値を探すということはいいアイディアだと思った。


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