[[2018a/Member]]

プログラム
 #define BLACK 36
 #define LITTLE_BLACK 40
 #define LITTLE_WHITE 44 
 #define WHITE 48
 #define LEFT OnFwd(OUT_C,40);OnRev(OUT_A,30);Wait(1);Off(OUT_C);
 #define LITTLE_LEFT OnFwd(OUT_C,30);OnFwd(OUT_A,20);Wait(1);Off(OUT_AC);
 #define LITTLE_RIGHT OnFwd(OUT_A,30);OnFwd(OUT_C,20);Wait(1);Off(OUT_AC);
 #define RIGHT OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1);Off(OUT_A);
 #define FRONT OnFwd(OUT_AC,30);Wait(1);Off(OUT_AC);
 #define LINE_LEFT if (SENSOR_1 < BLACK) {LEFT;KAZU += 3;} else if (SENSOR_1 < LITTLE_BLACK)  {LITTLE_LEFT;KAZU += 1;} else if (SENSOR_1 > WHITE) {RIGHT;KAZU -= 1;}   else if (SENSOR_1 >LITTLE_WHITE) {LITTLE_RIGHT;KAZU -= 3;} else {FRONT;KAZU *= 0;}
 #define LINE_RIGHT if (SENSOR_1 < BLACK) {RIGHT;KAZU += 3;} else if (SENSOR_1 < LITTLE_BLACK) {LITTLE_RIGHT;KAZU += 1;} else if (SENSOR_1 > WHITE) {LEFT;KAZU -= 1;}else if (SENSOR_1 > LITTLE_WHITE) {LITTLE_LEFT;KAZU -= 3;} else {FRONT;KAZU *= 0;}         
 #define AGERU OnRev(OUT_B,10);Wait(1500);Off(OUT_B);
 #define SAGERU OnFwd(OUT_B,10);Wait(2000);Off(OUT_B);

 task main()
 {
    SetSensorLight(S1);
    int KAZU=0; 
 
 
 
    AGERU;
 
    OnFwd(OUT_AC,30);Wait(700);Off(OUT_AC);
    repeat(5000){LINE_LEFT;};KAZU *= 0;
    Off(OUT_AC);
 
    while(KAZU < 100)
        {LINE_LEFT;}; 
    Off(OUT_AC);
    PlaySound(SOUND_DOUBLE_BEEP);
 
    Wait(1000);KAZU *= 0;           //Cヲ感知
 
    OnFwd(OUT_AC,30);Wait(400);Off(OUT_AC);
    repeat(3000){LINE_LEFT;};KAZU *= 0;               //Cを通過の後トレスに戻る
 
    while(KAZU < 250)
         {LINE_LEFT;};
    Off(OUT_AC);
    PlaySound(SOUND_UP);
 
    KAZU *= 0;Wait(500);          //CDの曲がり角を感知
 
    OnRev(OUT_A,40);OnFwd(OUT_C,40);Wait(2000);Off(OUT_AC);
    repeat(1200){LINE_LEFT};KAZU *= 0;
    while(KAZU < 100){LINE_LEFT;};           //曲がって復帰
    Off(OUT_AC);
 
    KAZU *= 0;
    PlaySound(SOUND_DOUBLE_BEEP);         //Dを感知
 
    SAGERU;//35缶をキャッチする
 
    OnRev(OUT_A,30);OnFwd(OUT_C,30);Wait(2500);Off(OUT_AC);
    repeat(1500){LINE_LEFT};KAZU *= 0;          //Dを曲がって復帰
 
    while(KAZU < 80){LINE_LEFT;};
    Off(OUT_AC);
 
    KAZU *= 0;PlaySound(SOUND_UP);         //Eを感知
 
    OnFwd(OUT_A,30);Wait(600);Off(OUT_AC);
    repeat(2000){LINE_LEFT;};KAZU *= 0;
    while(KAZU < 100){LINE_LEFT;};
    Off(OUT_AC);
    KAZU *= 0;         //Fを感知 
    
    PlaySound(SOUND_DOUBLE_BEEP);Wait(500);
 
    OnRev(OUT_A,40);OnFwd(OUT_C,40);Wait(1500);Off(OUT_AC);
    repeat(800){LINE_LEFT;};KAZU *= 0;
    while(KAZU < 100){LINE_LEFT;};
    Off(OUT_AC);KAZU *= 0;              //Gを感知
 
    PlaySound(SOUND_DOUBLE_BEEP);
    Wait(1000);
 
    repeat(30000){
                     if (SENSOR_1 < BLACK) {OnRev(OUT_A,40);Wait(1);Off(OUT_AC);} 
                     else if (SENSOR_1 < LITTLE_BLACK) {LEFT;}
                     else if (SENSOR_1 > WHITE) {OnRev(OUT_C,30);Wait(1);Off(OUT_AC);}
                     else if (SENSOR_1 > LITTLE_WHITE) {RIGHT;} 
                     else {FRONT;}
                            };
    repeat(1000){LINE_LEFT;};KAZU *= 0;
    while(KAZU < 120){LINE_LEFT;};
    Off(OUT_AC);                 //Hを感知
 
    PlaySound(SOUND_DOUBLE_BEEP);Wait(1000);KAZU *= 0;
 
    OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(2500);Off(OUT_AC);
 
 
 
    repeat(3000){LINE_RIGHT;};KAZU *= 0;
    while(KAZU < 120){LINE_RIGHT;};
    Off(OUT_AC);               //Iを感知
 
    PlaySound(SOUND_DOUBLE_BEEP);Wait(1000);KAZU *= 0;
   
    OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(2500);Off(OUT_AC);
    while(KAZU < 150){LINE_RIGHT};Off(OUT_AC);
    PlaySound(SOUND_UP);KAZU *= 0;            //Lを感知
 
    OnFwd(OUT_C,30);Wait(300);Off(OUT_AC);
    while(KAZU < 150){LINE_RIGHT;};
    Off(OUT_AC);
    PlaySound(SOUND_UP);KAZU *= 0;               //Kを感知
 
    OnFwd(OUT_C,30);Wait(300);Off(OUT_AC);
    while(KAZU < 100){LINE_RIGHT;};Off(OUT_AC);
    PlaySound(SOUND_DOUBLE_BEEP);KAZU *= 0;Wait(1000);           //Jを感知
 
    OnFwd(OUT_C,30);OnRev(OUT_A,30);Wait(2500);Off(OUT_AC);
    AGERU;
    OnRev(OUT_AC,30);Wait(1000);Off(OUT_AC);
    OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(4000);Off(OUT_AC);
 
    repeat(2000){LINE_LEFT;};KAZU *= 0;
    while(KAZU < 100){LINE_LEFT;};
    Off(OUT_AC);
    PlaySound(SOUND_DOUBLE_BEEP);Wait(1000);KAZU *= 0;            //Bを感知
 
    OnFwd(OUT_A,30);OnRev(OUT_C,30);Wait(1500);Off(OUT_AC);
    repeat(1000){LINE_LEFT;};KAZU *= 0;
    while(KAZU < 100){LINE_LEFT;};
    Off(OUT_AC);
    OnFwd(OUT_AC,30);Wait(500);Off(OUT_AC);
 
 }


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