[[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


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS