[[2004/B6/ロボコン]] 右のRCX キャタピラ担当 /*RCX 右 キャタピラ*/ int SEKIGAISEN; task BOUGAI() { Wait(128); repeat(9999) { repeat(256) { SEKIGAISEN = 0; SendMessage(SEKIGAISEN); SEKIGAISEN = SEKIGAISEN + 1 ; } } } task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); //端子1にタッチセンサー(前) SetSensor(SENSOR_2,SENSOR_LIGHT); //端子2にライトセンサー SetSensor(SENSOR_3,SENSOR_TOUCH); //端子3にタッチセンサー(真中、後ろ共通) start BOUGAI; OnFwd(OUT_A+OUT_C); until(SENSOR_3==1); Wait(350); Off(OUT_A+OUT_C); //台から降りる PlaySound(SOUND_CLICK); Wait(200); //アームを下げる間待つ OnRev(OUT_A+OUT_C); until(SENSOR_3==1); Off(OUT_A+OUT_C); //後ろの壁につくまで後退 PlaySound(SOUND_CLICK); Wait(300); //アームが下がるまで待つ repeat(9999) { ClearTimer(0); OnFwd(OUT_C); Wait(100); OnFwd(OUT_A); until(SENSOR_1==1 || Timer(0) > 220); //取り込むか22秒たつまで前進 Off(OUT_A+OUT_C); PlaySound(SOUND_CLICK); //取り込んだら音を鳴らす if(SENSOR_1 == 1 && SENSOR_2 > 40) //白、緑の時 { OnRev(OUT_A+OUT_C); until(SENSOR_3 == 1); PlaySound(SOUND_CLICK); Off(OUT_A+OUT_C); //壁につくまで後退 OnFwd(OUT_A); Wait(50); OnFwd(OUT_C); Wait(450); //スピンするスペース確保 OnFwd(OUT_A); OnRev(OUT_C); Wait(910); Off(OUT_A+OUT_C); //180°スピン until(SENSOR_3 == 1); //アームが上がるまで待つ PlaySound(SOUND_CLICK); OnFwd(OUT_A+OUT_C); Wait(350); Off(OUT_A+OUT_C); //アームあげたまま前進 Wait(300); //紙パックを排出するまで待つ OnRev(OUT_A+OUT_C); Wait(500); Off(OUT_A+OUT_C); //アームあげたまま後退 Wait(480); //アームが下がるまで待つ OnFwd(OUT_A) ;OnRev(OUT_C); Wait(910); //180°スピン OnRev(OUT_A+OUT_C); until(SENSOR_3 == 1); Off(OUT_A+OUT_C); } else if(Timer(0) < 220) //黒の時 { OnFwd(OUT_C); OnRev(OUT_A); Wait(350); Off(OUT_A+OUT_C); //左少しスピン Wait(350); //黒排出まで待つ OnFwd(OUT_A); OnRev(OUT_C); Wait(300); Off(OUT_A+OUT_C); //右少しスピン } else { OnRev(OUT_A+OUT_C); until(SENSOR_3==1); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); until(SENSOR_3==1); Wait(430); } } } こちらもアームの上下の間はWaitしている。&br; 同時に動かすこともできるが、アームへの負担が大きいため&br; 逐一止まってアームを動かしている。