2005/B1

左を書くプログラム

task main(){
	OnRev(OUT_B);//ペンを上げる
	OnFwd(OUT_B);//ペンを下げる
	Wait(30);
	Off(OUT_B);
	Wait(30);
	OnFwd(OUT_A+OUT_C);//直線を進む
	Wait(250);
	Off(OUT_A+OUT_C);
	OnRev(OUT_B);//ペンを上げる
	Wait(30);
	Off(OUT_B);
	Wait(30);
	OnRev(OUT_A+OUT_C);//直線を戻る
	Wait(100);//三分の一ぐらいまで
	OnFwd(OUT_A);//直角に曲がる
	Wait(90);
	OnRev(OUT_A+OUT_C);//曲線の始めの点にいく
	Wait(90);
	Off(OUT_A+OUT_C);
	OnFwd(OUT_B);//ペンを下げる
	Wait(30);
	Off(OUT_B);
	Wait(30);
	repeat(18){//曲線部分を書く
		OnFwd(OUT_A+OUT_C);
		Wait(20);
		Off(OUT_C);
		Wait(3);
	}
	OnRev(OUT_B);//ペンを上げる
	Wait(30);
	Off(OUT_B);
	repeat(7){//曲線部分を途中まで戻る
		OnRev(OUT_A+OUT_C);
		Wait(20);
		Off(OUT_A);
		Wait(3);
	}
	Off(OUT_A+OUT_C);
	OnFwd(OUT_A);OnRev(OUT_C);//直角に曲がる
	Wait(90);
	Off(OUT_A+OUT_C);
//ここから工の部分
	OnFwd(OUT_B);//ペンを下げる
	Wait(30);
	Off(OUT_B);
	OnFwd(OUT_A+OUT_C);//直線を進む
	Wait(100);
	Off(OUT_A+OUT_C);
	OnRev(OUT_B);//ペンを上げる
	Wait(30);
	Off(OUT_A);
	OnRev(OUT_A+OUT_C);//直線を戻る
	Wait(50);//半分ぐらいまで
	OnFwd(OUT_C);//直角に曲がる
	Wait(90);
	Off(OUT_A+OUT_C);
	OnFwd(OUT_B);//ペンを下げる
	Wait(30);
	Off(OUT_B);
	OnFwd(OUT_A+OUT_C);//直線を進む
	Wait(30);
	Off(OUT_A+OUT_C);
	OnRev(OUT_B);//ペンを上げる
	Wait(30);
	Off(OUT_B);
	OnRev(OUT_C);OnFwd(OUT_A);//直角に曲がる
	Wait(90);
	OnRev(OUT_A+OUT_C);//最後の直線の始まりの部分に行く
	Wait(70);
	Off(OUT_A+OUT_C);
	OnFwd(OUT_B);//ペンを下げる
	Wait(30);
	Off(OUT_B);
	OnFwd(OUT_A+OUT_C);//直線を進む
	Wait(140);
	Off(OUT_A+OUT_C);
}
  • 関数やマクロを使ってもう少しプログラムを整理してみよう。 -- まいける(TA) 2005-12-02 (金) 17:01:18

机の壁に沿って進むプログラム

task main()
{
	SetSensor(SENSOR_1,SENSOR_TOUCH);	//タッチセンサーだと宣言
	SetSensor(SENSOR_2,SENSOR_TOUCH);
	while(true)
	{
		
		while(SENSOR_1 == 1){		//センサー1がONならば以下の行動を繰り返す
				OnRev(OUT_A);
				OnRev(OUT_C);
				Wait(1);
				Off(OUT_A);
				Wait(1);
			}
		
		if(SENSOR_1==0){	//もしセンサー1がOFFならば以下の行動をする
			Off(OUT_C);
			OnRev(OUT_A);
		}
		if(SENSOR_2==1){	//もしセンサー2がONならば以下の行動をする
			OnFwd(OUT_A);
			OnRev(OUT_C);
			Wait(150);
			Off(OUT_C);
			OnRev(OUT_A);
		}
	}
}

ライントレースするプログラム(センサー*1モーター*2

#define THRESHOLD 40   //明るさ
task main ()
{
   SetSensor(SENSOR_2, SENSOR_LIGHT);
   while (true) {
       if (SENSOR_2 < THRESHOLD) {   // 黒線上にいるとき
           OnRev(OUT_A);
           Off(OUT_C);
       } else {                      // 黒線から外れたとき
           Off(OUT_A);
           OnRev(OUT_C);
       }
   }
}

ライントレースするプログラム(センサー*2モーター*2

#define light 42 //明るさ
task main ()
{
	SetSensor(SENSOR_1,SENSOR_LIGHT);
	SetSensor(SENSOR_3,SENSOR_LIGHT);
	
	while (true){
		if(SENSOR_1 > light){
			OnRev(OUT_A);
		}
		else{
			OnFwd(OUT_A);
		}
		if(SENSOR_3 > light){
			OnRev(OUT_C);
		}
		else{
			OnFwd(OUT_C);
		}
	}
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-07 (水) 17:21:42