[[2006b/A6/R Room/mission 2]]

制作者(TAKA)

 #define THRESHOLD 40


 task main ()
 {
  SetSensor(SENSOR_1,SENSOR_LIGHT);    // センサー1を光センサーに
  SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサー2をタッチセンサーに
  SetSensor(SENSOR_2,SENSOR_TOUCH);  //センサー3を光センサーに
  OnFwd(OUT_A+OUT_C);  //前進
  while(true){
              if(SENSOR_3>THRESHOLD)  //センサー3の値が40以上になったら  
              {
               Off(OUT_A);  //A側のタイヤストップ
               OnFwd(OUT_C);  //C側のタイヤ正回転
              }
              if(SENSOR_1>THRESHOLD)  //センサー1の値が40以上になったら
              {
               Off(OUT_C);  //C側のタイヤストップ
               OnFwd(OUT_A);  //A側のタイヤ正回転
              }
              else(OUT_A+OUT_C);  //それ以外は前進
              if(SENSOR_2==1)  //センサー2が反応したら  (ぶっつかって避ける)
              {
               OnRev(OUT_A+OUT_C);  //後退
               Wait(50); 
               Off(OUT_A+OUT_C);  
               OnFwd(OUT_A);  //A側正回転
               Wait(20);
               OnFwd(OUT_C);  //C側正回転 → 前進
               Wait(50);
               Off(OUT_A+OUT_C); 
               OnFwd(OUT_C); //C側正回転
               Wait(35); 
               OnFwd(OUT_A); //A側正回転 → 前進
              }
   }
 }

*改善版 [#za919cc6]
 
 #define THRESHOLD 48
 task main ()
 {
  SetSensor(SENSOR_1,SENSOR_LIGHT);
  SetSensor(SENSOR_3,SENSOR_LIGHT);
  SetSensor(SENSOR_2,SENSOR_TOUCH);
  OnFwd(OUT_A+OUT_C);
  SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサー1を光センサーに
  SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサー2をタッチセンサーに
  SetSensor(SENSOR_2,SENSOR_TOUCH);  //センサー3を光センサーに
  OnFwd(OUT_A+OUT_C);  //前進
  while(true){
             if(SENSOR_1<THRESHOLD)
             if(SENSOR_1<THRESHOLD)  //センサー1の値が48以下になったら
             {
              Off(OUT_A);
              OnFwd(OUT_C);
              Off(OUT_A);  //A側のタイヤストップ
              OnFwd(OUT_C);  //C側のタイヤ正回転
             }
            else if(SENSOR_3<THRESHOLD)
            else if(SENSOR_3<THRESHOLD)  //それ以外でセンサー3の値が48以下になったら
             {
              Off(OUT_C);
              OnFwd(OUT_A);
              Off(OUT_C);  //C側のタイヤストップ
              OnFwd(OUT_A);  //A側のタイヤ正回転
             }
             else(OUT_A+OUT_C);
             if(SENSOR_2==1)
             else(OUT_A+OUT_C);  //それ以外前進
             if(SENSOR_2==1)  //センサー2が反応したら (ぶつかったら右に避けて進む)
             {
              OnRev(OUT_A+OUT_C);
              OnRev(OUT_A+OUT_C);  //後退
              Wait(60);
              Off(OUT_A+OUT_C);
              OnFwd(OUT_A);
              Wait(60);
              OnFwd(OUT_C);
              Off(OUT_A+OUT_C);  
              OnFwd(OUT_A);  //A側正回転
              Wait(60); 
              OnFwd(OUT_C);  //C側正回転 → 前進
              Wait(100);
              Off(OUT_A+OUT_C);
              OnFwd(OUT_C);
              Off(OUT_A+OUT_C);  
              OnFwd(OUT_C);  //C側正回転
              Wait(110);
              OnFwd(OUT_A);
              OnFwd(OUT_A);  //A側正回転 → 前進
             }
    }
  }

-動きをスムーズにするようにこちらのプログラムも『else if』を使いました。あと、おなじく避けるときのプログラムも少しいじりました。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS