*&size(40){〜第2回課題〜}; [#t2a38d64]
**タッチセンサ(壁に沿って動くロボット)[#ac107e3e]
***壁にぶつかったら後退して方向転換するプログラム [#g74e8d55]
  task main()
  {
      SetSensor(SENSOR_1,SENSOR_TOUCH);  //センサの宣言
      
      OnFwd(OUT_A+OUT_C);  //センサが壁にあたるまで前進
      until(SENSOR_1 == 1);
      off(OUT_A+OUT_C);
      
      OnRev(OUT_A+OUT_C);  //センサが壁にあたったら後退
      Wait(50);
      
      OnFwd(OUT_A);  //90度回転
      OnRev(OUT_C);
      Wait(150);
      
      Off(OUT_A+OUT_C);  //停止
  }
[[この課題の詳細はこちらへ:http://yakushi.shinshu-u.ac.jp/robotics/?2005%2FC6%2F%B2%DD%C2%EA2_2]]
***感想 [#f1f83fe0]
壁に沿って動くロボットを作るうえで苦労したことは、タッチセンサを取り付ける位置であったり、適切なバンパーの長さにすることであった。取り付ける位置を誤るとセンサが壁にあたらなかったりしたし、バンパーが長すぎると角にひっかかって曲がりきれないことがあった。
**光センサ(黒線上を動くロボット)[#ce82fcdc]
***プログラム [#y95d7e30]
光センサ1個の場合

  task main()
  {
      SetSensor(SENSOR_2,SENSOR_LIGHT);  //センサの宣言
      
      while(true)  //無限に繰り返す
      {
          if(SENSOR_2<40)
          {  
             Off(OUT_C);  //センサが黒線上にあるとき左折
             OnRev(OUT_A);
             OnFwd(OUT_C);
             
          }else{
                  Off(OUT_A);  //黒線上からはずれると右折
                  OnRev(OUT_C);
                  OnFwd(OUT_A);
                 
               }
       }
  }
光センサ2個の場合

  task main()
  {
      SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサの宣言
      SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサの宣言
      
      while(true)  //無限に繰り返す
      {            //センサ1、センサ2共に黒線上にあるとき前進する
           if(SENSOR_1<40)
           {
              OnRev(OUT_C);
              
           }else{
                   OnFwd(OUT_C);  //センサ1が黒線上をはずれると左折
                }
           
           if(SENSOR_3<40)
           {
              OnRev(OUT_A);
                     
           }else{
                   OnFwd(OUT_A);  //センサ2が黒線上をはずれると右折
                }
      }
  }

***感想 [#w2ae2cf2]
光センサ1個の場合では動きが遅かったが、光センサ2個使用すことによってずいぶん速くなった。
**コメントはこちらへ [#h3ecc8d6]
#comment


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