[[2005/A1]]
*光を追いかけるロボット [#ffbb569c]

 //製作者 そるとと 高尾
 //指導 harada
 #define freq 10		//センサ測定頻度
 #define kaiten 25	//一周に必要な測定回数 
 
 int hikari:
 int koutai;
 
 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);
		    }
		}	
 }

 sub zenshin(){OnFwd(OUT_A+OUT_C);Wait(200);Float(OUT_A+OUT_C);}  //前進するサブルーチン

 task main()
 {
     while(true)
     {
     sagasu();
     zenshin();
     }
 }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS