[[2004/B6/ロボコン]] 左のRCX アーム担当 /*RCX 左 アーム*/ int SEKIGAISEN; task BOUGAI() { 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; Wait(280); //台から降りるまで待つ OnFwd(OUT_A); until(SENSOR_3==1); //アームを一番上に上げる OnRev(OUT_A); Wait(200); Off(OUT_A); //アームをちょっと下げる PlaySound(SOUND_CLICK); until(SENSOR_3==1); OnRev(OUT_A); Wait(300); Off(OUT_A); //後ろの壁についたらアーム下げ repeat(9999) { ClearTimer(0); OnFwd(OUT_C); until(SENSOR_1==1 || Timer(0) > 220); //取り込むまで取り込みを回す Off(OUT_C); PlaySound(SOUND_CLICK); if(SENSOR_1==1 && SENSOR_2 > 37) //白、緑の時 { until(SENSOR_3 == 1); //壁につくまでは何もしない Wait(1410); //スピンする間待つ OnFwd(OUT_A); Wait(530); //5.3秒経つか一番上に上がるまで until(SENSOR_3==1); //アームを上げる Off(OUT_A); PlaySound(SOUND_CLICK); Wait(350); //前進する間待つ OnRev(OUT_C); Wait(300); Off(OUT_C); //紙パック排出 Wait(500); //後退する間待つ OnRev(OUT_A); Wait(480); Off(OUT_A); //アームを下げる until(SENSOR_3==1); } else if(Timer(0) < 220) //黒の時 { Wait(350); //スピンする間待つ OnRev(OUT_C); Wait(350); Off(OUT_C); //黒排出 OnRev(OUT_C); Wait(300); Off(OUT_C); //スピンする間待つ } else { OnRev(OUT_C); Wait(300); Off(OUT_C); until(SENSOR_3==1); Wait(100); //前進する間待つ OnFwd(OUT_A); until(SENSOR_3==1); Off(OUT_A); OnRev(OUT_A); Wait(430); Off(OUT_A); } } }