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側正回転 → 前進
             }
  }
}

改善版

#define THRESHOLD 48
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_1<THRESHOLD)  //センサー1の値が48以下になったら
            {
             Off(OUT_A);  //A側のタイヤストップ
             OnFwd(OUT_C);  //C側のタイヤ正回転
            }
           else if(SENSOR_3<THRESHOLD)  //それ以外でセンサー3の値が48以下になったら
            {
             Off(OUT_C);  //C側のタイヤストップ
             OnFwd(OUT_A);  //A側のタイヤ正回転
            }
            else(OUT_A+OUT_C);  //それ以外前進
            if(SENSOR_2==1)  //センサー2が反応したら (ぶつかったら右に避けて進む)
            {
             OnRev(OUT_A+OUT_C);  //後退
             Wait(60);
             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);  //C側正回転
             Wait(110);
             OnFwd(OUT_A);  //A側正回転 → 前進
            }
   }
 }
  • 動きをスムーズにするようにこちらのプログラムも『else if』を使いました。あと、おなじく避けるときのプログラムも少しいじりました。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-12-16 (土) 00:38:15 (4630d)