[[2008b/MemberOnly/進行状況A]]

2008b/A7/課題3右

#hr
CENTER:&size(25){光追跡ロボット};
#hr

CENTER:製作者:タキさ

目次
#contents
-------

*課題についての説明 [#d306895c]


*製作したマシン [#e6da836a]

*このマシンの利点[#la6ffb39]

*モータ・センサに対応する端子 [#d352300d]
モータ、センサについては以下の端子に接続してあります。
-出力側
 A端子 → 左モータ(正回転:前進,逆回転:後進)
 B端子 → なし
 C端子 → 右モータ(正回転:前進,逆回転:後進)

-入力側
 1端子 → 左光センサ
 2端子 → タッチセンサ
 3端子 → 右光センサ

*プログラムの紹介 [#n9e8de4f]

 /* 光追跡ロボット */
 
 /* 定数を定義 */#define SHI_J 75
 
 void move_fwd(void){
 	OnFwd(OUT_A);
 	Wait(27);
 	OnRev(OUT_A);
 	Wait(20);
 	Off(OUT_A);
 }
 
   
 task main(){
 	int n, s1, s2;
 	s1 = 0;
 	s2 = 0;
 	
 	SetSensor(SENSOR_1,SENSOR_LIGHT);
 	SetSensor(SENSOR_3,SENSOR_LIGHT); 
 	
 	SetPower(OUT_A,5);
 	
 	OnRev(OUT_A);
 	ClearTimer(0);
 	while(FastTimer(0) <= 500){
 		if(SENSOR_1 > s1)s1 = SENSOR_1;
 		if(SENSOR_3 > s2)s2 = SENSOR_3;
 	}
 	Off(OUT_A);
 	Wait(100);
 	OnRev(OUT_A);
 	s1 = s1 - 2;
 	s2 = s2 - 2;
 	
 	while((SENSOR_1 < s1) || (SENSOR_3 < s2));
 	
 	while(1){
 		if((SENSOR_1 > SHI_J) || (SENSOR_3 > SHI_J)){
 			Off(OUT_A);
 			OnRev(OUT_C);
 			Wait(17);
 			Off(OUT_C);
 			break;
 		}
 		
 		while((SENSOR_1 >= s1) || (SENSOR_3 >= s2))move_fwd();
 		if(SENSOR_1 < s1 && SENSOR_3 >= s2){
 			while(SENSOR_1 < s1)OnFwd(OUT_A);
 		}
 		if(SENSOR_1 >= s1 && SENSOR_3 < s2){
 			while(SENSOR_3 < s2)OnRev(OUT_A);
 		}
 		if(SENSOR_1 < s1 && SENSOR_3 < s2){
 			while((SENSOR_1 < s1) || (SENSOR_3 < s2))OnRev(OUT_A);
 		}
 	}
 }	



 


*苦労した点 [#u55de425]


*製作日誌 [#u1068eb7]

*皆さんのコメント [#g72ad519]
よろしければコメントをどうぞ

#comment

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