*課題2* [#p5eb685a]
指定の道をあらかじめ模造紙に描き、第1コース・第2コースそれぞれの道順に沿って製作したロボットを動かす。また、その途中に、350mlの空き缶を指定の位置から、指定の位置に運ぶ。
*コース* [#l49cfc9f]
第2コース
*ロボットの説明* [#fbbc27ea]
**車輪部分** [#k29f6177]
課題1と同様、シンプルな3輪構造で、前輪が2輪、後輪が1輪となっている。前輪の2輪が駆動し、後輪の2輪が自由に回転する。
**アーム** [#y0f7317f]
#define DEEPWHITE SENSOR_1 > 48
#define WHITE SENSOR_1 > 44
#define BLACK SENSOR_1 < 40
#define DEEPBLACK SENSOR_1 < 36
#define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Off(OUT_AC);
#define BIT_RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,10);Wait(1);Off(OUT_AC);
#define LEFT OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(1);Off(OUT_AC);
#define BIT_LEFT OnFwd(OUT_C,30);OnRev(OUT_A,10);Wait(1);Off(OUT_AC);
#define STRAGHT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC);
#define LEFT_LINE if(DEEPWHITE){RIGHT DAI -= 3;} else if(WHITE){BIT_RIGHT DAI -= 1;} else if(DEEPBLACK){LEFT DAI += 3;} else if(BLACK){BIT_LEFT DAI += 1;} else {STRAGHT DAI *= 0;}    
#define RIGHT_LINE if(DEEPWHITE){LEFT DAI -= 3;} else if(WHITE){BIT_LEFT DAI -= 1;} else if(DEEPBLACK){RIGHT DAI += 3;} else if(BLACK){BIT_RIGHT DAI += 1;} else {STRAGHT DAI *= 0;}                               
#define OFF Off(OUT_AC);
#define WAIT Wait(1000);
#define CATCH OnFwd(OUT_AC,20);Wait(300);OFF OnFwd(OUT_B,30);Wait(300);Off(OUT_B);OnRev(OUT_AC,20);Wait(300);OFF
#define RELEASE OnFwd(OUT_B,30);Wait(1000);Off(OUT_B);Wait(500);OnRev(OUT_B,30);Wait(500);Off(OUT_B);
#define KANSU DAI < 150
#define SIMPLE_RIGHT OnFwd(OUT_A,40);OnRev(OUT_C,40);
#define SIMPLE_LEFT OnFwd(OUT_C,40);OnRev(OUT_A,40);
#define GO_STRAIGHT OnFwd(OUT_A,40);OnFwd(OUT_C,40);Wait(190);OFF
#define MOVE_RIGHT SIMPLE_RIGHT Wait(750); OFF
#define MOVE_LEFT SIMPLE_LEFT Wait(750); OFF

task main()
{
    SetSensorLight(S1);

    int DAI=0;

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    DAI *= 0;
    PlaySound(SOUND_DOWN);

    GO_STRAIGHT
    MOVE_RIGHT

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    DAI *= 0;
    PlaySound(SOUND_UP);
    WAIT
    CATCH

    OnFwd(OUT_B,10);

    GO_STRAIGHT
    MOVE_LEFT

    while(BLACK){
                    OnFwd(OUT_AC,20);
                  }
    OFF

    repeat(2){
                 while(KANSU){
                                 LEFT_LINE
                                 }
                 OFF
                 DAI *= 0;

                 SIMPLE_RIGHT
                 Wait(50);
                 OFF

                 while(BLACK){
                                 OnFwd(OUT_AC,30);
                                 }
                 OFF
               }

    while(KANSU){
                    LEFT_LINE
                  }
    OFF
    PlaySound(SOUND_UP);
    WAIT
    DAI *= 0;

    OnFwd(OUT_AC,30);
    Wait(50);
    OFF

    SIMPLE_LEFT
    Wait(450);
    OFF

    while(KANSU){
                    LEFT_LINE
                  }
    OFF
    DAI *= 0;

    while(BLACK){
                    OnFwd(OUT_A,30);OnFwd(OUT_C,30);
                  }
    OFF

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    DAI *= 0;

    while(BLACK){
                    OnFwd(OUT_A,30);OnFwd(OUT_C,30);
                  }
    OFF

    while(KANSU){
                    LEFT_LINE
                  }
    OFF
    DAI *= 0;

    GO_STRAIGHT
    MOVE_LEFT

    while(KANSU){
                    LEFT_LINE
                  }
    OFF
    WAIT
    DAI *= 0;

    GO_STRAIGHT
    MOVE_RIGHT

    while(BLACK){
                    OnFwd(OUT_A,30);OnFwd(OUT_C,30);
                  }
    OFF

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    WAIT
    DAI *= 0;
    PlaySound(SOUND_UP);

    GO_STRAIGHT
    MOVE_RIGHT

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF

    SIMPLE_RIGHT
    Wait(50);
    OFF

    while(BLACK){
                    OnFwd(OUT_AC,30);
                   }
    OFF

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF

    Off(OUT_B);
    WAIT
    RELEASE

    OnFwd(OUT_AC,30);
    Wait(80);
    OFF

    SIMPLE_RIGHT
    Wait(500);
    OFF

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    DAI *= 0;

    GO_STRAIGHT
    MOVE_RIGHT

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    WAIT
    DAI *= 0;
    PlaySound(SOUND_UP);

    while(BLACK){
                    OnFwd(OUT_A,30);OnFwd(OUT_C,29);
                  }
    OFF

    while(KANSU){
                    RIGHT_LINE
                  }
    OFF
    DAI *= 0;
    PlaySound(SOUND_FAST_UP);
}

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