*課題3 [#y5f5f9c7]
 懐中電灯の光に向かってブロックを投げるロボット。

**目次 [#u6cd6dd7]
#contents
*本体の構造 [#ufbfdeb2]
モーターは2個使用。片方はロボットの移動、もう片方はブロックを投げるため。
  
 ディファレンシャルギアを使い、モーター1つで左右の動きを実現した。

*プログラム [#xd050249]
**1. 全方向から懐中電灯の方向を探しだし、懐中電灯の手前50cmまで進んで懐中電灯を狙ってブロックを投げる。懐中電灯は動かさない。 [#d12c3e86]
 
 #define THRESHOLD 35
 #define ROUND 50
   
 task main()
 {
 
 	SetSensor(SENSOR_2,SENSOR_LIGHT);
 	
 	ClearTimer(0);
 
 	int n = 0;	//
 	
 	while(Timer(0) <  ROUND) {
 		OnFwd(OUT_A);		//一定時間その場回転
 		if(SENSOR_2 > n) {
 			n=SENSOR_2;		//回転中、最も明るかった時のセンサーの値を記録
 		}	
 	}
 	while(n > SENSOR_2 - 5) {
 		OnFwd(OUT_A);		//上で記録した明るさの方向を探す
 	}
 	while(SENSOR_2 > THRESHOLD) {	//明かりとの距離が50cm以上なら50cmまで前進
 		OnRev(OUT_A);
 		Wait(200);
 		OnFwd(OUT_A);
 		Wait(200);
 		OnRev(OUT_A);
 		Wait(200);
 	}
 	Off(OUT_A);		//その場で停止
 	OnRev(OUT_C);	//投げる
 	Wait(100);
  	Off(OUT_C);
 } 

二つ目のプログラムbyニコチュー
 #define THRESHOLD 45
 task main(){
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_3,SENSOR_LIGHT);
    
   while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)) {  //既定の明るさに達するまで
     OnFwd(OUT_A);            //その場で回転
     Off(OUT_C);
   }
   Off(OUT_A); 
   OnFwd(OUT_C); Wait(10);  //ホイールを投げる
   OnRev(OUT_C); Wait(10);
   Off(OUT_C);
 }

**2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば50cmの距離まで近づいて懐中電灯を狙ってブロックを投げる。 [#q4f2485d]

 #define THRESHOLD 35
 #define ROUND 50
 
 task main()
 {
 
 	SetSensor(SENSOR_1,SENSOR_LIGHT);
 	SetSensor(SENSOR_3,SENSOR_LIGHT);
 	
 	while( (SENSOR_1 < THRESHOLD)||(SENSOR_3 < THRESHOLD) ) {
 	/* 2つのセンサーがともに一定以上の明るさを感知するまで繰り返す */
 		if(SENSOR_1 > SENSOR_2) {
 			OnFwd(OUT_A);
 		} else {
 			OnRev(OUT_A);
 		}
 		/* 明るい方向へ進む */
 	}
 		
 	Off(OUT_A);		//その場で停止
 	OnRev(OUT_C);	//投げる
 	Wait(100);
 	Off(OUT_C);
  }

二つ目のプログラムbyニコチュー
 #define THRESHOLD 45
 task main(){
   SetSensor(SENSOR_1,SENSOR_LIGHT);
   SetSensor(SENSOR_3,SENSOR_LIGHT);
  
   while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)) {  //センサー1とセンサー3がどちらも既定の明るさに達
                                                                しないとき
     if(SENSOR_1 > SENSOR_3) {  //左側の方が明るいとき
       OnFwd(OUT_A);  //左に旋回
     } else {  //右側の方が明るいとき
       OnRev(OUT_A);  //右に旋回
     }
   }
   Off(OUT_A); 
   OnFwd(OUT_C); Wait(10);  //ホイールを投げる
   OnRev(OUT_C); Wait(10);
   Off(OUT_C);
 }
 

*工夫した点、苦労した点 [#pabbe8c7]
ディファレンシャルギアを使っていると動力があまり伝わらず、普通に動かすのにも苦労した。

光源を探すためのTHRESHOLDを決める作業もなかなか調整が大変だった。

*感想 [#n1ed480d]
今回はロボットが予想通りに動いてくれなくて大変だった。

特に、ディファレンシャルギアまわりはもう少し改善の余地があったかもしれない。

*コメント [#l91b2f9c]
よろしければ一言お願いします。
- 写真が欲しいです。 -- [[なかむら]] &new{2009-02-06 (金) 11:22:00};

#comment()
ロボットの説明を詳しくしましょう。もう写真がないなら、ディファレンシャル・ギアの説明などをしても良いです。 FI

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS