課題3

課題内容

 半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作しなさい。 ロボット本体が懐中電灯に接触しない限りどこからピンポン玉を放ってもよい。

ロボット本体の説明

基本的なロボットの構造は変わらないが光センサーを前方の光を感知するように設置するとともに、左右のブロックによって、より光センサーの強度が増し、また正確な値が測れるようにした。

image2.JPG

また、光センサーを前方に設置したために前方に設置していたボールを発射する機構が光センサーの探知を妨害するようになってしまった。そこでボールを発射する機構を少し上方へ設置する事によって光センサーへの妨害を阻止した。

ボールによる入射妨害.JPG

さらに、光センサーの回りに何も設置しなかった場合、光センサーの精度に問題がある場合があるので、あえて光センサーの回りにブロックによる壁を設置した。これによって光センサーが回りの光を感知しなくなるために、光センサーの精度がより増した。

光の入射制限.JPG

 プログラミングの手順

ロボットを回転させて、前方に取り付けた光センサーにより光の値を計測→光の値の中で最大値を計測→光の値の最大値の場所を特定し、ボールを放出する。

プログラミング

#define zensin(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);
#define ageru(t) OnRev(OUT_B);Wait(t);Off(OUT_B);



task main ()
{
	SetSensor(SENSOR_2,SENSOR_LIGHT);

	int turntime = 300; //360度回転するための時間
	int lightmax = 5; //
	int timemax; //

	ClearTimer(0);  // タイマーのリセット
	
	SetPower(OUT_AC,1); // 観測時のタイヤの回転の速さによる変化を抑えるための準備 

	OnFwd(OUT_A);OnRev(OUT_C); //回転
	while(FastTimer(0) < turntime) // 観測中の最大値を求めるための条件式

 

	{
	if(SENSOR_2 > lightmax)
	{
	 lightmax = SENSOR_2;
	 timemax = FastTimer(0);
	 }
	}
	Off(OUT_AC); // 回転終了
	
	SetPower(OUT_AC,1); // 観測時に読み取った光の最大値のある場所への移動
	OnFwd(OUT_C);OnRev(OUT_A);
	Wait(turntime - timemax);
	Off(OUT_AC);
}	
	ageru(25);  // アームを上げる
	zensin(80); // 前進

}

添付ファイル: file光の入射制限.JPG 88件 [詳細] fileボールによる入射妨害.JPG 101件 [詳細] fileimage2.JPG 133件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-08-16 (日) 17:45:44 (1462d)