[[2005/A2/課題2]] *机を1周するロボ [#x6d0e8a6] **プログラム [#nfe5692b] task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); // センサ端子1に接続されたセンサが // タッチセンサであると宣言 OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転【プロセス1】 Wait(400); // 4sec継続し前進 Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正1開始) OnFwd(OUT_C); // モータCを正回転 Wait(50); // 0.5secマシン回転 OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 until(SENSOR_1 == 1); // タッチセンサが押されるまで待機 Off(OUT_A+OUT_C); // モータAとモータC を停止 OnRev(OUT_A+OUT_C) ; Wait(50);// 0.5secバック【プロセス2】 OnFwd(OUT_C) ; Wait(120); // Cのモータだけを正回転させて // 1.2secで方向転換 // 上記の設定時間は適当に調節 OnFwd(OUT_A); // Aのモータも正回転する OnFwd(OUT_A+OUT_C); // モータAとモータCを5sec正回転 Wait(500); // 5sec継続 Off(OUT_A+OUT_C); // モータAとモータC を停止 OnFwd(OUT_A) ; // モーターAを1.8sec正回転【プロセス3】 Wait(185); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータCを1.75sec回転 Wait(175); Off(OUT_A+OUT_C); // モータAとモータC を停止 OnFwd(OUT_A) ; // モーターAを1.8sec正回転 Wait(180); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータC を正回転【プロセス4】 Wait(180); // 1sec前進 Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正1開始) OnFwd(OUT_C); // モータCを正回転 Wait(17); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(730); // 7.3sec前進 Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A) ; // モーターAを2.1sec正回転【プロセス5】 Wait(200); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(450); Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正1開始) OnFwd(OUT_C); // モータCを正回転 Wait(30); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(550); // 5.5sec長距離走行 Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正2開始) OnFwd(OUT_C); // モータCを正回転 Wait(30); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(400); Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正3開始) OnFwd(OUT_C); // モータCを正回転 Wait(14); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(500); Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正4開始) OnFwd(OUT_C); // モータCを正回転 Wait(5); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(200); Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正5開始) OnFwd(OUT_C); // モータCを正回転 Wait(10); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(400); Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正6開始) OnFwd(OUT_C); // モータCを正回転 Wait(22); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(250); Off(OUT_A+OUT_C); // モータAとモータCを停止 Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正7開始) OnFwd(OUT_C); // モータCを正回転 Wait(14); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(500); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A) ; // モーターAを2.1sec正回転【プロセス6】 Wait(210); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータC を正回転 Wait(180); // 1.8sec前進 Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正1開始) OnFwd(OUT_C); // モータCを正回転 Wait(10); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(800); // 8sec前進 Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A) ; // モーターAを1.8sec正回転【プロセス7】 Wait(185); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータCを2.3sec回転 Wait(230); Off(OUT_A+OUT_C); // モータAとモータC を停止 OnFwd(OUT_A) ; // モーターAを1.8sec正回転 Wait(180); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転【プロセス8】 Wait(340); Off(OUT_A+OUT_C); // モータAとモータC を停止 OnFwd(OUT_C) ; Wait(250); // Cのモータだけを正回転させて【プロセス9】 // 2secで方向転換 // 上記の設定時間は適当に調節 OnFwd(OUT_A); // Aのモータも正回転する OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 Wait(400); Off(OUT_A+OUT_C); // モータAとモータCを停止(起動修正1開始) OnFwd(OUT_C); // モータCを正回転 Wait(50); OnFwd(OUT_A+OUT_C); // モータAとモータCを正回転 until(SENSOR_1 == 1); // タッチセンサが押されるまで待機 Off(OUT_A+OUT_C); // モータAとモータC を停止 OnRev(OUT_A+OUT_C) ; Wait(50);// 0.5secバック【プロセス10】 OnFwd(OUT_C) ; Wait(110); // Cのモータだけを正回転させて // 1.1secで方向転換 // 上記の設定時間は適当に調節 OnFwd(OUT_A); // Aのモータも正回転する OnFwd(OUT_A+OUT_C); // モータAとモータC を正回転 Wait(300); Off(OUT_A+OUT_C); // モータAとモータC を停止 OnFwd(OUT_A) ; // モーターAを1.8sec正回転【プロセス11】 Wait(185); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータCを3sec回転 Wait(300); Off(OUT_A+OUT_C); // モータAとモータC を停止 OnFwd(OUT_A) ; // モーターAを1.8sec正回転 Wait(180); Off(OUT_A+OUT_C); // モータAとモータCを停止 OnFwd(OUT_A+OUT_C); // モータAとモータC を正回転【プロセス12】 until(SENSOR_1 == 1); // タッチセンサが押されるまで待機 Off(OUT_A+OUT_C); // モータAとモータC を停止 } **作成者 [#o36f75ea] とーます マイケルの母 **感想 [#y147422a] 今回の機体は、シンプルさとスピードをコンセプトに作りました。 タッチセンサーがうまく感知してくれないことが続き、コースのどこでセンサーを使うか、センサーの使用用途を考えるのに苦労しました。 マイケルの母 コメントをどうぞ #comment