[[2009b/A2/ロボコン]] *最初 [#m407171a] #define Bright 45 #define GOFWD(t) OnRev(OUT_A+OUT_C); Wait(t); #define Stop Off(OUT_A+OUT_C); #define GOREV OnFwd(OUT_A+OUT_C); task main () { SetSensor(SENSOR_3, SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_LIGHT); SetSensor(SENSOR_1,SENSOR_ROTATION); while(SENSOR_2 > Bright){ GOFWD(10); } Wait(10); while(SENSOR_2>Bright){ OnRev(OUT_C); Off(OUT_A); } PlaySound(SOUND_DOUBLE_BEEP) ; ClearSensor(SENSOR_1); while (abs(SENSOR_1)< 60) { if (SENSOR_2 < Bright) { // 醇M醇`醇S潤ッ醇Q„遵ャ…遵ャ¢遵ャ遵ー遵ャ∆遵ャ´ OnRev(OUT_A); Off(OUT_C); Wait(20); } else { // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ∆遵ャ´ Off(OUT_A); OnRev(OUT_C); Wait(20); } } Stop; ClearSensor(SENSOR_1); OnRev(OUT_B); //start arm; /*while(abs(SENSOR_1)<5){ OnRev(OUT_C); Float(OUT_A); Wait(40); OnFwd(OUT_A); Wait(5); }*/ ClearTimer(0); while(FastTimer(0)<150){ OnRev(OUT_A); Float(OUT_C); Wait(60); OnFwd(OUT_C); Wait(20); } Stop; PlaySound(SOUND_DOUBLE_BEEP) ; while(abs(SENSOR_1)<40){ GOFWD(10); } Stop; Wait(100); //stop arm; PlaySound(SOUND_FAST_UP) ; ClearSensor(SENSOR_1); /*while(SENSOR_3<Bright){ GOREV; }*/ while(abs(SENSOR_1)<40){ GOREV; } Stop; Off(OUT_B); /*ClearTimer(0); while(FastTimer(0)<150){ OnFwd(OUT_A); Float(OUT_C); Wait(40); OnRev(OUT_C); Wait(5); } Stop;*/ while(SENSOR_2>Bright){ OnFwd(OUT_C); OnRev(OUT_A); } /*while(SENSOR_3>Bright){ GOREV; }*/ PlaySound(SOUND_FAST_UP) ; Stop; ClearTimer(0); ClearSensor(SENSOR_1); while (FastTimer(0)<500) { if (SENSOR_3 < Bright) { // 醇M醇`醇S潤ッ醇Q„遵ャ…遵ャ¢遵ャ遵ー遵ャ∆遵ャ´ OnFwd(OUT_C); Off(OUT_A); } else { // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ∆遵ャ´ Off(OUT_C); OnFwd(OUT_A); } } Stop; ClearSensor(SENSOR_1); while(abs(SENSOR_1)<=20){ OnFwd(OUT_C); Float(OUT_A); Wait(20); OnRev(OUT_A); } ClearTimer(0); while(FastTimer(0)<500){ OnFwd(OUT_A+OUT_C); } /*ClearSensor(SENSOR_1); while(abs(SENSOR_1)<=180){ OnFwd(OUT_A+OUT_C); } Stop;*/ /*ClearSensor(SENSOR_1); while(abs(SENSOR_1)<=90){ OnFwd(OUT_A); Float(OUT_C); Wait(40); OnRev(OUT_C); Wait(40); } Stop;*/ /*while((SENSOR_3>Bright) || (SENSOR_2>Bright)){ if(SENSOR_3<Bright){ OnRev(OUT_C); Off(OUT_A); }else if(SNESOR_2<Bright){ OnRev(OUT_A); Off(OUT_C); }else{ GOFWD(10); } } GOREV(300);*/ //ClearSensor(SENSOR_1); /*while(SENSOR_2 < Bright){ OnRev(OUT_A); Float(OUT_C); }*/ while(SENSOR_2<Bright){ OnRev(OUT_A+OUT_C); } ClearTimer(0); ClearSensor(SENSOR_1); while (abs(SENSOR_1)<=450) { if (SENSOR_2 < Bright) { // 醇M醇`醇S潤ッ醇Q„遵ャ…遵ャ¢遵ャ遵ー遵ャ∆遵ャ´ OnRev(OUT_A); Off(OUT_C); } else { // 醇M醇`醇S潤ッ遵ャ潤・・遵沛・O遵ャ遵ス遵ャΩ遵ャ∆遵ャ´ Off(OUT_A); OnRev(OUT_C); } } Stop; } /*task arm(){ while(true){ OnFwd(OUT_B); } Off(OUT_B); }*/ *二個目 [#fb5f7e3b] #define FWD_AC OnFwd(OUT_A+OUT_C); #define FWD_A OnFwd(OUT_A); #define FWD_C OnFwd(OUT_C); #define REV_AC OnRev(OUT_A+OUT_C); #define REV_A OnRev(OUT_A); #define REV_C OnRev(OUT_C); #define OFF_AC Off(OUT_A+OUT_C); #define OFF_A Off(OUT_A); #define OFF_C Off(OUT_C); #define FLOAT_AC Float(OUT_A+OUT_C); #define FLOAT_A Float(OUT_A); #define FLOAT_C Float(OUT_C); #define THRESHOLD 45 #define ARM_OPEN OnFwd(OUT_B); #define ARM_CLOSE OnRev(OUT_B); #define ARM_STOP Off(OUT_B); task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_ROTATION); SetSensor(SENSOR_3,SENSOR_LIGHT); Wait(3000); ClearSensor(SENSOR_2); while(abs(SENSOR_2)<=21){ FWD_AC; } while(abs(SENSOR_2)<=45){ line_trace(); } 45r(); OFF_AC; Wait(100); /*while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){ if(SENSOR_1>THRESHOLD){ REV_C;OFF_A; }else if(SENSOR_3>THRESHOLD){ REV_A;OFF_C; }else{ REV_AC; } } OFF_AC; ARM_CLOSE; Wait(25); ARM_STOP;*/ ClearSensor(SENSOR_2); while(abs(SENSOR_2)<25){ FWD_AC; } OFF_AC; Wait(100); ARM_CLOSE; Wait(50); ARM_STOP; ClearSensor(SENSOR_2); /*while(abs(SENSOR_2)<25){ REV_AC; }*/ while(abs(SENSOR_2)<24){ REV_AC; } OFF_AC; Wait(100); ClearSensor(SENSOR_2); ClearTimer(0); while(SENSOR_1>THRESHOLD) { FWD_C;REV_A; } ClearSensor(SENSOR_2); while(SENSOR_3>THRESHOLD){ line_trace1(); } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<=15){ FWD_A;REV_C; } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<30){ line_trace1(); } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<5){ FWD_C;REV_A; } OFF_AC; Wait(10); FWD_AC; Wait(300); OFF_AC; ARM_OPEN;Wait(30); ARM_STOP; while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){ REV_AC; } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<=5){ FWD_C;REV_A; } while(SENSOR_1>THRESHOLD){ line_trace3(); } while(abs(SENSOR_2)<=5){ FWD_C;REV_A; } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<200){ line_trace3(); } OFF_AC; /*while((SENSOR_1>THRESHOLD) || (SENSOR_3>THRESHOLD)){ line_trace(); } while(SENSOR_1<THRESHOLD){ FWD_A;REV_C; } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<=15){ line_trace(); } ClearSensor(SENSOR_2); while(abs(SENSOR_2)<=5){ FWD_C;REV_A; } FWD_AC;Wait(300); OFF_AC; /*ARM_OPEN; Wait(25); ARM_STOP; while((SENSOR_1>THRESHOLD) ||(SENSOR_3>THRESHOLD)){ REV_AC; } while(abs(SENSOR_2)<5){ FWD_C;REV_A; } while(SENSOR_1)*/ } sub line_trace(){ if(SENSOR_1<THRESHOLD){ FWD_C;REV_A; }else if(SENSOR_3<THRESHOLD){ FWD_A;REV_C; }else { FWD_AC; } } sub line_trace1(){ if(SENSOR_1<THRESHOLD){ FWD_A;OFF_C; }else{ FWD_C;OFF_A; } } sub line_trace3(){ if(SENSOR_3<THRESHOLD){ FWD_C;OFF_A; }else{ FWD_A;OFF_C; } } sub 45r(){ ClearSensor(SENSOR_2); while(abs(SENSOR_2)<5){ FWD_A;REV_C; } } sub 45l(){ ClearSensor(SENSOR_2); while(abs(SENSOR_2)<5){ FWD_C;REV_A; } }