2009a/A2/課題3左

目次

課題3

1.全方向から懐中電灯の方向を探しだし、懐中電灯を狙ってブロックを投げるロボットを製作する。  

2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げるロボットを製作する。

ロボットの製作・説明

説明書を参考にしつつ駆動部を本体後方に寄せた。

SH350091.JPG
SH350092.JPG

前方には投てき用のモーターを本体下部に配置した。

SH350090.JPG

投てき用のアームは長めに作り、ブロックを装填する部分では上下から挟みこむ形にした。

arm.JPG

プログラムの製作・説明

プログラム1 (T.I)

#defineT_T 500  //最初の旋回時間
task main 
{
 int l_m=0;  //光センサーの最大値に0を代入
 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサー
 SetPower(OUT_C,5);  //投てき用モーター出力5
 ClearTimer(0);    //タイマーリセット
 while(FastTaimer(0)<T_T) // 最も明るい方向を検索
  {
    if(SENSOR_1>l_m){  //センサー1>光センサーの最大値のとき
   OnFwd(OUT_A);
  l_m=SENSOR_1;    //最大値を更新
    }
 else{   OnFwd(OUT_A);   //その他の場合何もしない
      }
  }          
  OnRev(OUT_A);  //1周したら
  until(SENSOR_1); //明るさ最大の方向まで再度旋回
  Off(OUT_A);   //停止
  OnFwd(OUT_C);  //投げる
  Wait(25);
  Off(OUT_C);
    }       //終わり

プログラム2(naoto)

#define THRESHOLD 35
task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーに
	SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー3も光センサーに
       SetPower(OUT_C,5); //ブロックを投げるモーターを出力5に
	
	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(25);
	Off(OUT_C);
}       //終了
   

感想・反省

明るさ最大の方向を見つけてその方向を向かせるのは簡単だったが、投げてもあまり飛ばないのが欠点。ギヤ比やアームの長さを調整してみてもなかなか上手くいかなかった。 (T.I)

懐中電灯を追いかけるプログラムを作るのが難しかった。細かく調整したので、なかなか良いものができた。(naoto)

コメント欄

ご自由にお書きください。



添付ファイル: fileSH350093.JPG 246件 [詳細] fileSH350092.JPG 411件 [詳細] fileSH350091.JPG 451件 [詳細] fileSH350090.JPG 360件 [詳細] filearm.JPG 419件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-08-09 (日) 22:05:54