[[2005/C5/しょう]] *詰め合わせ [#m0674b0b] ライン int c=40; task main () { SetSensor (SENSOR_1, SENSOR_LIGHT); SetSensor (SENSOR_3, SENSOR_LIGHT); while (true) { while (SENSOR_1<c && SENSOR_3<c) { OnFwd (OUT_AC); } while (SENSOR_1<c && SENSOR_3>=c) { OnFwd (OUT_C); OnRev (OUT_A); } while (SENSOR_1>=c && SENSOR_3<c) { OnFwd (OUT_A); OnRev (OUT_C); } OnFwd (OUT_AC); } } light2 int t=75; int m=0; int b; task main () { SetSensor (SENSOR_1, SENSOR_LIGHT); ClearTimer (0); while (Timer (0) <= t) { OnFwd (OUT_B); until (SENSOR_1 >= m || Timer (0) >= t+1); if (Timer (0) >= t+1) goto fine; Off (OUT_B); ClearTimer (1); m=SENSOR_1; PlaySound (SOUND_CLICK); } fine: Off (OUT_B); b=FastTimer (1)+5; PlaySound (SOUND_FAST_UP); OnRev (OUT_B); Wait (b); Off (OUT_B); } &br light3 int t=50; int m=0; int b; task main () { SetSensor (SENSOR_3, SENSOR_LIGHT); SetSensor (SENSOR_1, SENSOR_LIGHT); ClearTimer (0); while (Timer (0) <= t) { OnFwd (OUT_A); OnRev (OUT_C); if (SENSOR_1 >= m) { ClearTimer (1); m=SENSOR_1; PlaySound (SOUND_CLICK); } } Off (OUT_A+OUT_C); b=FastTimer (1); PlaySound (SOUND_FAST_UP); OnFwd (OUT_C); OnRev (OUT_A); Wait (b); Off (OUT_A+OUT_C); start follow; stop main; } task follow () { start watch; while (true) { if (SENSOR_1 > SENSOR_3) { Off (OUT_A); OnFwd (OUT_C); } if (SENSOR_1 < SENSOR_3) { Off (OUT_C); OnFwd (OUT_A); } if (SENSOR_1 == SENSOR_3) { OnFwd (OUT_AC); } } } task watch () { SetEvent(1, SENSOR_1, EVENT_TYPE_FASTCHANGE); SetEvent(2, SENSOR_3, EVENT_TYPE_FASTCHANGE); monitor( EVENT_MASK(1) | EVENT_MASK(2) ) {} catch( EVENT_MASK(1) | EVENT_MASK(2) ) { start main; stop follow; } } wall int t; int w; sub yuu () { OnFwd(OUT_A+OUT_C); until((SENSOR_1==1)&&(SENSOR_3==1)); OnRev(OUT_A+OUT_C); Wait(w); OnFwd(OUT_A); OnRev(OUT_C); Wait(105); Off (OUT_A+OUT_C); } sub sho () { ClearTimer (0); while (Timer (0) < t) { while (SENSOR_1==1 && SENSOR_3==0) { Off (OUT_A+OUT_C); OnFwd (OUT_A+OUT_C); } while (SENSOR_1==0 && SENSOR_3==0) { Off (OUT_A+OUT_C); OnFwd (OUT_C); OnRev (OUT_A); Wait (10); OnFwd (OUT_A+OUT_C); Wait (10); } if (SENSOR_1==1 && SENSOR_3==1) { OnRev (OUT_A+OUT_C); Wait (0); OnFwd (OUT_A); OnRev (OUT_C); Wait (130); Off (OUT_A+OUT_C); } } Off (OUT_A+OUT_C); } task main () { SetSensor (SENSOR_1, SENSOR_TOUCH); //left SetSensor (SENSOR_3, SENSOR_TOUCH); //right w=5; yuu(); w=50; yuu(); OnFwd (OUT_A+OUT_C); Wait (330); OnFwd (OUT_C); OnRev (OUT_A); Wait (90); OnFwd (OUT_A+OUT_C); until (SENSOR_1==1 && SENSOR_3==1); t=160; sho(); w=5; yuu(); yuu(); OnFwd (OUT_A+OUT_C); Wait(340); t=1000; sho(); Off (OUT_A+OUT_C); } //OUT_C is arm and OUT_A is turntable //OnRev (OUT_C) is up and OnFwd (OUT_C); is down //OnRev (OUT_A) is side and OnFwd (OUT_A); is back task main () { ClearMessage(1); SetSensor (SENSOR_1, SENSOR_LIGHT); SetSensor (SENSOR_3, SENSOR_TOUCH); start arm; Wait (60); start turn; } task arm () { OnRev (OUT_C); until (SENSOR_3==1) OnFwd (OUT_C); until (Message(1) == 1) OnRev (OUT_C); Wait (20); Off(OUT_C); } task turntable () { OnFwd (OUT_A); Wait (36); Off(OUT_A); Wait (300); OnRev (OUT_A); Wait (36); Off(OUT_A); } int c=40; int t=0; task main () { SetSensor (SENSOR_1, SENSOR_LIGHT); SetSensor (SENSOR_3, SENSOR_LIGHT); start transfer; } task transfer () { SetPower(OUT_A, OUT_FULL); SetPower(OUT_C, OUT_FULL); while (true) { if (SENSOR_1<c && SENSOR_3<c) { line (); } while (SENSOR_1<c && SENSOR_3>=c) { OnFwd (OUT_C); OnRev (OUT_A); } while (SENSOR_1>=c && SENSOR_3<c) { OnFwd (OUT_A); OnRev (OUT_C); } OnFwd (OUT_A+OUT_C); } } sub line () { if (t == 0 || t==3 || t==4 || t==7) { PlaySound (SOUND_CLICK ); if (t==4) { SetPower(OUT_A, 3); OnRev(OUT_A); OnFwd (OUT_C); until (SENSOR_1>=c && SENSOR_3>=c); SetPower(OUT_A, OUT_FULL); } else { SetPower(OUT_C, 3); OnRev (OUT_C); OnFwd (OUT_A); until (SENSOR_1>=c && SENSOR_3>=c); SetPower(OUT_C, OUT_FULL); } t++; } else { t++; PlaySound (SOUND_FAST_UP); OnFwd (OUT_A+OUT_C); until (SENSOR_1>=c && SENSOR_3>=c); } }