2010b

2010b

ライントレース6⌒□⌒)////★☆フゥ〜[2010/a4/右]

メンバー紹介

コース紹介

力をめちゃ入れた点

DSCN0450.JPG

僕らのこだわり

マシーン作成過程において苦労した点

マシーン紹介  

NEC_0029_2.jpg

プログラ-ム

こっちの松本クンのプログラム(近道を通るプログラム)

int search_time; //12    //search_timeという変数を利用(0.12秒)


task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);      //センサー1を光センサーと宣言(閾値41)
	SetSensor(SENSOR_3,SENSOR_LIGHT);       //センサー3を光センサーと宣言(閾値45)
	SetSensor(SENSOR_2,SENSOR_ROTATION);     //センサー2を回転センサーと宣言
 	ClearTimer(0);                               //タイマー(0)をクリア

	while((Timer(0)<=78)||((Timer(0)>=80)&&(Timer(0)<=160)))     //時間を指定してこの中で動作させる。
	{
  		ClearSensor(SENSOR_2);           //センサー2をクリア
		if(SENSOR_3 < 45)                           //センサー3が黒線を感知した時で…↓
		{
			if((abs(SENSOR_2) <= 34)||((abs(SENSOR_2)>=248)&&(abs(SENSOR_2)<=253)))    //なおかつ、近道の近辺だったら…↓
			{
				OnFwd(OUT_C);       //右に旋回
				OnRev(OUT_A);
				Wait(64);
			}
			if(((abs(SENSOR_2) >= 46)&&(abs(SENSOR_2) <= 52))||((abs(SENSOR_2) >=278) &&(abs(SENSOR_2) <= 283)))     //あるいは、近道の終わりの方だったら…↓
			{
				OnFwd(OUT_C);          //右に旋回
				OnRev(OUT_A);
				Wait(70);
			}
		}
		if(SENSOR_1 < 41)           //センサーが黒線上にある場合…↓
		{
			OnFwd(OUT_A+OUT_C);           //前進
		}

		if(SENSOR_1 > 41)           //センサーが黒線から外れた場合…↓
			{
				OnFwd(OUT_A+OUT_C);    //0.2秒だけ前進(点線の判定)  
				Wait(20);
				if(SENSOR_1 > 41)     //それでも黒線上に乗らなかったら…↓
				{
					OnRev(OUT_A+OUT_C);    //元の位置まで戻る。
					Wait(20);
					while(SENSOR_1 > 41)    //センサー1が黒線外にある場合は以下を繰り返す。
					{
						search_time=12;     //サーチする時間に0.12秒を代入
						if(((abs(SENSOR_2) > 105)&&(abs(SENSOR_2) < 216))||((abs(SENSOR_2) > 325)&&(abs(SENSOR_2) < 464)))      //まず左からサーチする場合(absとは絶対値の意味)
						{
							OnFwd(OUT_A);     //左に0.12秒だけ旋回
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1 > 41)     //更にそれでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_C);    //右にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒右に旋回してサーチ)
								OnRev(OUT_A);
								Wait(search_time*=2);
							}
							search_time*=2;      //サーチする時間を更に2倍する(調べる範囲を広げる。)
						}
						else               //まず右からサーチする場合
						{
							OnFwd(OUT_C);      //まず右に0.12秒旋回してサーチ
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1 > 41)      //それでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_A);     //左にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒左に旋回してサーチ)
								OnRev(OUT_C);
								Wait(search_time*=2);
							}
							search_time*=2;      //サーチする時間を2倍にする(調べる範囲を広げる。)
						}
					}
				}
			}
	}
}
   

フジゃる丸優のプログラム(近道を通らないプログラム)

int search_time; //12    //search_timeという変数を利用(0.12秒)

task main()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);      //センサー1を光センサーと宣言(閾値41)
	SetSensor(SENSOR_3,SENSOR_LIGHT);       //センサー3を光センサーと宣言(閾値45)
	SetSensor(SENSOR_2,SENSOR_ROTATION);     //センサー2を回転センサーと宣言
	ClearTimer(0);                               //タイマー(0)をクリア

  while((Timer(0)<=90)||((Timer(0)>=92)&&(Timer(0)<=172)))     //時間を指定して
	{
               ClearSensor(SENSOR_2);           //センサー2をクリア
		if(SENSOR_1 < 41)           //センサーが黒線上にある場合…↓
		{
			OnFwd(OUT_A+OUT_C);           //前進
		}

		if(SENSOR_1 > 41)           //センサーが黒線から外れた場合…↓
			{
 			OnFwd(OUT_A+OUT_C);    //0.2秒だけ前進(点線の判定)  
				Wait(20);
				if(SENSOR_1 > 41)     //それでも黒線上に乗らなかったら…↓
				{
					OnRev(OUT_A+OUT_C);    //元の位置まで戻る。
					Wait(20);
					while(SENSOR_1 > 41)    //センサー1が黒線外にある場合は以下を繰り返す。
					{
						search_time=12;     //サーチする時間に0.12秒を代入
						if(((abs(SENSOR_2) > 117)&&(abs(SENSOR_2) < 238))||((abs(SENSOR_2) > 361)&&(abs(SENSOR_2) < 489)))      //まず左からサーチする場合(absとは絶対値の意味)
						{
							OnFwd(OUT_A);     //左に0.12秒だけ旋回
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1>41)     //更にそれでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_C);    //右にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒右に旋回してサーチ)
								OnRev(OUT_A);
								Wait(search_time*=2);
							}
							search_time*=2;      //サーチする時間を更に2倍する(調べる範囲を広げる。)
						}
						 else               //まず右からサーチする場合

						{
							OnFwd(OUT_C);      //まず右に0.12秒旋回してサーチ
							Wait(search_time);
							Off(OUT_A+OUT_C);    //モーターを停止
							Wait(2);
							if(SENSOR_1 > 41)      //それでも黒線上に乗らなかったら…↓
							{
								OnFwd(OUT_A);     //左にサーチタイムの2倍の時間サーチ(0.12秒で元に戻って、更に0.12秒左に旋回してサーチ)
                                                                OnRev(OUT_C);
								 Wait(search_time*=2);
						}
							 search_time*=2;      //サーチする時間を2倍にする(調べる範囲を広げる。)
						}
					}
				}
			}
	}
}         

感想、反省

コメントをどうぞ



添付ファイル: fileDSCN0450.JPG 255件 [詳細] fileNEC_0029_2.jpg 327件 [詳細] fileNEC_0031_2.jpg 333件 [詳細] fileNEC_0028_2.jpg 360件 [詳細] fileNEC_0033.jpg 222件 [詳細] fileNEC_0032.jpg 218件 [詳細] fileNEC_0031.jpg 226件 [詳細] fileNEC_0030.jpg 231件 [詳細] fileNEC_0029.jpg 242件 [詳細]

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