2005/A1

光を追いかけるロボット

はじめに

私には難しすぎたため、同じA1の原田君にプログラム製作を指導していだきました。ほとんど同じです、すみませんm(__)m

プログラム

//製作者 そるとと 高尾
//指導 harada
#define freq 10		//センサ測定頻度
#define kaiten 25	//一周に必要な測定回数 

int hikari:
int koutai;
 sub zenshin(){OnFwd(OUT_A+OUT_C);Wait(200);Off(OUT_A+OUT_C);}  //前進するサブルーチン
sub sagasu() 		                     //光源の方向を探すサブルーチン
{
     SetSensor(SENSOR_1, SENSOR_LIGHT); 		 		//センサー1を光センサーと定義
    int w;					 	        //変数w(測定頻度)を定義
    w=freq;							//測定頻度をwに代入
    int bmax;							//変数bmax(明るさの最大値)を定義
    bmax=0;							//bmaxを初期化
    int cn;							//変数cn(測定回数)を定義
    int hikari;					 		//変数hikari(光源がある測定回数)を定義
    for (cn=1; cn<=kaiten; cn++)				//cnを25まで増やす
	{
        OnFwd(OUT_A); OnRev(OUT_C); Wait(w);Off(OUT_A+OUT_C);	//w/100秒間回転
	if (bmax <= SENSOR_1 )					//前の場所より明るかったら↓
	    {
	        bmax = SENSOR_1;			  	//明るさの最大値を更新
                hikari=cn;					//光源のあると思われる測定回数を記録				
		PlayTone(220,50);			        //明るさの最大値が更新された場合に『ド』を鳴らす
		}
		else{PlayTone(262,50);		 	        //明るさの最大値が更新されない場合に『ミ』を鳴らす
		}		
        }
	koutai=kaiten-hikari;				        //光源までの回転数を計算する
	if(back <= kaiten/2 )
		{
	 	repeat(koutai)				        //光源の方向を向く
		    {	
		    OnFwd(OUT_C); OnRev(OUT_A); 
		    Wait(w);
		    Off(OUT_A+OUT_C);
		    Wait(60);			
		    }
		}
	else
		{
		repeat(hikari)
		    {
		    OnFwd(OUT_A); 
                   OnRev(OUT_C); 
		    Wait(w);
		    Off(OUT_A+OUT_C);
		    Wait(60);
		    }
		}	
}
task main()
{
    while(true)
    {
    sagasu();
    zenshin();
    }
}
PA0_0054.JPG

感想

難しい。わけがわからない。結局教えてもらってもいまいち理解できませんでした(涙)。ロボットの写真を下に添付しておきます。原田君ありがとうm(__)m


添付ファイル: filePA0_0054.JPG 156件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-11 (土) 12:55:59 (4935d)