[[2018a/Member]]

#define x 45 //閾値
#define r 65 //旋回時間90`(roll time)
#define g 35 //放しに行くまでの時間(go time)



sub line()  //コース1
{

ClearTimer(0);

    while(FastTimer(0)<=55/2){

    if(SENSOR_2>x+7){
        OnRev(OUT_A);
        OnFwd(OUT_C);
        ClearTimer(0);
    }else if(SENSOR_2>=x+5){
        Off(OUT_A);
        OnFwd(OUT_C);
        ClearTimer(0);
    }else if(SENSOR_2>x){
        OnFwd(OUT_AC);
        ClearTimer(0);
    }else if(SENSOR_2>x-5){
        Off(OUT_C);
        OnFwd(OUT_A);
        ClearTimer(0);
    }else{
        OnRev(OUT_C);
        OnFwd(OUT_A);
	 }
     }
    Off(OUT_AC);
}



sub release()  //離すプログラム
{
        OnFwd(OUT_C);
        OnRev(OUT_A);
        Wait(r);  //旋回時間90`
        Off(OUT_AC);

        OnFwd(OUT_AC);
        Wait(g);  //進み時間
        Off(OUT_AC);

        OnRev(OUT_B);
        Wait(10);  //離す時間
        Off(OUT_B);

        OnRev(OUT_AC);
        Wait(g);  //進み時間(帰り)
        Off(OUT_AC);

        OnRev(OUT_C);
        OnFwd(OUT_A);
        Wait(r*2);  //旋回じかん180`
        Off(OUT_AC);
}





sub cat()  //掴むプログラム
{
        ClearTimer(1);
        while(SENSOR_1==0){
        OnFwd(OUT_AC);
         }
        Off(OUT_AC);
        int t=FastTimer(1);
        OnFwd(OUT_B);
        Wait(10);
        Off(OUT_B);
        OnRev(OUT_AC);
        Wait(t);
        Off(OUT_AC);
}



task main()
{

        SetSensor(SENSOR_1,SENSOR_TOUCH);
        SetSensor(SENSOR_2,SENSOR_LIGHT);

        line();
        line();
        Wait(100);  //until C

        OnFwd(OUT_AC);
        Wait(70);
        Off(OUT_AC);

        line();
        Wait(100);  //until D
        cat();
        Wait(100);  //D

        OnFwd(OUT_C);  //D turn
        OnRev(OUT_A);
        Wait(r);
        Off(OUT_AC);
        Wait(100);

        line();  //until E
        line();  //until G

        OnFwd(OUT_C);  //G turn
        OnRev(OUT_A);
        Wait(r);
        Off(OUT_AC);
        Wait(100);

        line();
        line();
        Wait(100);  //until H

        OnFwd(OUT_C);  //H turn
        Off(OUT_C);
        Wait(r);
        Off(OUT_AC);

        line();
        Wait(100);  //until I

        OnFwd(OUT_A);  //I turn
        Off(OUT_C);
        Wait(r/2);
        Off(OUT_AC);

        ClearTimer(1);
    while(FastTimer(1)<1000)
    {
        line();
    }
        Wait(100);  //until J

        release();

        line();
        Wait(100);  //until B

        OnFwd(OUT_C);
        OnRev(OUT_A);
        Wait(r);
        Off(OUT_AC);

        line();
}

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