机の周りを壁にそって走るプログラム(試作)

sub straight(){
	OnFwd(OUT_A+OUT_C);
	}
sub turn_right(){
	OnFwd(OUT_C);
	}
sub turn_left(){
	OnFwd(OUT_A);
	}
void back(int t){
	OnRev(OUT_A+OUT_C);
	Wait(t);
	Off(OUT_A+OUT_C);
	}	
	
task main(){
	SetSensor(SENSOR_1,SENSOR_TOUCH);
	SetSensor(SENSOR_3,SENSOR_TOUCH);
	
	while(true){
	
	if(SENSOR_3==1&&SENSOR_1!=1){//右が触れていたら
	straight();//前進
	}
	if(SENSOR_3==1&&SENSOR_1==1){//両方触れていたら
	turn_left();//右側のセンサーが壁に触れるまで左回転
	until(SENSOR_3==1&&SENSOR_1!=1);
	}
	if(SENSOR_3!=1&&SENSOR_1==1){//左が触れていたら
	turn_right();//右側のセンサーが壁に触れるまで右回転
	until(SENSOR_3==1&&SENSOR_1!=1);
	}
	if(SENSOR_3!=1&&SENSOR_1!=1){//両方触れてなかったら
	turn_right();//触れるまで右回転(ここを改良した方がよい)
	until(SENSOR_3==1&&SENSOR_1!=1);
	}
	}
	}

机の周りを壁に沿って走るプログラム(改良)

task main()
{
    SetSensor(SENSOR_1,SENSOR_TOUCH);
    SetSensor(SENSOR_3,SENSOR_TOUCH);
  while(true)
  {
    if ((SENSOR_1 == 0) && (SENSOR_3 == 0))//両方のセンサーが壁から外れていたら
{
           OnFwd(OUT_A);//右回転
           Float(OUT_C);
       }
    if ((SENSOR_1 == 1) && (SENSOR_3 == 0))//左のセンサーが触れていたら
       {
           OnFwd(OUT_C);//左回転(左が触れてるので左の車輪のバックもする)
           OnRev(OUT_A);
           Wait(50);
       }
    if ((SENSOR_1 == 0) && (SENSOR_3 == 1))//右のセンサーが触れていたら
       {
           OnFwd(OUT_C);//左回転
           Float(OUT_A);
       }
    if ((SENSOR_1 == 1) && (SENSOR_3 == 1))//両方のセンサーが壁に触れていたら
       {
           OnFwd(OUT_C);//左側が外れるまで左回転
           OnRev(OUT_A);
           Wait(80);
       }
  }
}


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-01-07 (土) 00:46:26