このページについて

 このページは課題3の「ロボット」と「プログラム」紹介のページです。

課題

ロボット紹介

 ここでは制作したロボットの写真と各部の説明を行っています。

ロボットの写真

1,側面P1000003.JPG 2,前面4.jpg 光センサーを2個使ったロボットを制作した。

プログラムの紹介

/*Serch Light program*/

#define TURN_T 430  //ロボットが回転して光を探す時間4.3秒

void move(int i){   /*ロボットの動きを変数(i)で定義*/
	switch(i){
	case 0:                                //move(1)の時、停止
		Off(OUT_A+ OUT_C);break;
	case 1:                                //move(2)の時、前進
		OnFwd(OUT_A+ OUT_C);break;
	case 3:                                //move(3)の時、右回転
		OnFwd(OUT_A);
		OnRev(OUT_C);break;
	case 4:                                //move(4)の時、左回転
		OnFwd(OUT_C);
		OnRev(OUT_A);break;
	}
}

void play_music(int light_p){  /*光の強度に合わせて音を鳴らす*/
	PlayTone(light_p,2);
	Wait(2);
}

task main(){ /*メインプログラム*/

	SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサー1を光センサーとして定義	
	SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサー3を光センサーとして定義
	int light_max = 0;		    //回転中の光強度の最大値を入れる変数
	int time_max = 0;                   //回転中の光強度が最大値だった時間を入れる変数
	
	ClearTimer(0);             //タイマーの初期化

	move(3);                   //4.3秒間右回転して、最も明るい位置を探す
	while(FastTimer(0) < TURN_T){
		play_music((SENSOR_1-24)*100);  //光強度に比例した音を鳴らす
		if(SENSOR_1 > light_max){        //光強度が最大だったときの時間をtime_maxに代入
			light_max = SENSOR_1;
			time_max = FastTimer(0);
		}
	}
	move(0);           //止まる
	move(4);           //左回りで光強度が最大だった位置にもどる
	Wait(TURN_T - time_max);
	while(true){       //光を追うプログラム開始
	move(1);           //0.5秒直進する
	Wait(50);        
		if(SENSOR_1+3 < SENSOR_3){     //もし、右側のセンサーが明るければ、左右のセンサーが同じ明るさになるまで右回転
			move(3);
			until(SENSOR_1 > SENSOR_3);
		}	
		if(SENSOR_3+3 < SENSOR_1){     //もし、左側のセンサーが明るければ、左右のセンサーが同じ明るさになるまで左回転
			move(4);
			until(SENSOR_1 < SENSOR_3);
		}
	}
}

苦労した点

改善点

感想(反省など)

個人のページへ

2006b/A4/a4r

ご自由にコメントをどうぞ



添付ファイル: file6.jpg 298件 [詳細] file4.jpg 288件 [詳細] fileP1000006.JPG 145件 [詳細] fileP1000005.JPG 300件 [詳細] fileP1000003.JPG 340件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-01-17 (水) 16:19:14