[[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(); }