[[2006a/B4]]
**黒い線上を走るプログラム [#l5c994af] 
 制作者 中澤
  sub turn_light() //光りセンサーによる反応
 {
  {
  if(SENSOR_1< 50) //左が黒かったら
    {
     OnFwd(OUT_C); //左に曲がる
     Off(OUT_A);
    }  
  {
      OnFwd(OUT_C); //左に曲がる
      Off(OUT_A);
  }  
  if(SENSOR_3 < 48) //右が黒かったら
    {
     OnFwd(OUT_A); //右に曲がる
     Off(OUT_C);
    }  
 }
 _
 sub turn_tach() //タッチセンサーによる反応
 {
      OnRev(OUT_A+OUT_C);Wait(100); //一旦引いて
  {
      OnFwd(OUT_A); //右に曲がる
      Off(OUT_C);
  }  
  }
  _
  sub turn_tach() //タッチセンサーによる反応
  {
      OnRev(OUT_A+OUT_C);Wait(100); //前にあるセンサーが反応したら、一旦引いて
      OnFwd(OUT_A);
      OnRev(OUT_C);Wait(150);    //ターン
      Off(OUT_A+OUT_C);
 }
 _
 task main ()  //メインタスク
 {
   SetSensor(SENSOR_1,SENSOR_LIGHT); 
   SetSensor(SENSOR_2,SENSOR_TOUCH);
   SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサーを定義
      while(true)
      {
           OnFwd(OUT_A+OUT_C);
             while(SENSOR_2 == 0) //タッチセンサーが反応してない時
             {
              turn_light();  //光りセンサーによる反応を実行
             }
           turn_tach();  //タッチセンサーによる反応を実行
          }
 }
  }
  _
  task main ()  //メインタスク
  {
  SetSensor(SENSOR_1,SENSOR_LIGHT); //ライト
  SetSensor(SENSOR_2,SENSOR_TOUCH); //タッチ
  SetSensor(SENSOR_3,SENSOR_LIGHT);  //ライトセンサーを定義
  while(true)
  {
       OnFwd(OUT_A+OUT_C);
  while(SENSOR_2 == 0) //タッチセンサーが反応してない時
  {
       turn_light();  //光りセンサーによる反応を実行
  }
       turn_tach();  //タッチセンサーによる反応を実行
  }
  }

**ロボットの説明 [#f2aa9b4a]
-今回のマシンはこのような感じです!~
-特徴は光センサーが2個+タッチセンサーがあることです。
-光センサーとタッチセンサーの合体した部分は車体と簡単に取り外しできます。
-今回もまたシンプルに仕上げました。
#ref(2006a/B4/課題2左/R0011398.JPG,40%)
-ちなみに最初は失敗作のセンサーが1個のこんな感じのロボでした。
#ref(2006a/B4/課題2左/DCF_0004.JPG,30%)
-この青いブロックの下に光センサーが組み込まれています。
#ref(2006a/B4/課題2左/R0011403.JPG,40%)
-このように、電源を入れるとセンサーが赤く光ります。
#ref(2006a/B4/課題2左/R0011404.JPG,40%)
-そしてコースはこれになりました!~
-コースがあまりにも単純なコースにしてしまったため、なんとなく顔を描いてみました。
#ref(2006a/B4/課題2左/R0011412.JPG,40%)
-下の写真を見るとわかるように黒い線を2個のセンサーの間になるように設置します。~
-この状態にしてプログラムを実行すればロボットは2個のセンサーの間に黒線が収まるように維持しながら走って行きます。~
-つまり、ライントレースすることになるわけです。                                       
#ref(2006a/B4/課題2左/R0011413.JPG,40%)
 
**苦労した点 [#k448022b]
 プログラムのif節の使い方がよく分からなかった。タッチセン           
 サーと光センサーの両方を使わなければならなかったのでとにか
 く難しかった。
-ロボットは前に光センサーとタッチセンサーを両方つけるのが大変だった。
-プログラムのif&while節の使い方がよく分からなかった。
-タッチセンサーと光センサーの両方を使わなければならなかったのでとにかく難しかった。
-特にセンサーを二つにした分、プログラムが多少複雑になったので大変だった。
-何度もはみ出していたのでそれを修正するのも大変だった。
**反省点 [#jd58c8cc]
-コースがしょぼすぎた。もうちょっと難しくすればよかった。
-ラインとレースはできたが、ラインとレースをしているときにずっと無駄に振動していたのが気になった。
-プログラムに関してはマクロを使わなかったのでまとまりのない感じになった。
-みんなで集まる時間が少なかったのであまり時間をかけられなかった。
-本来の課題である「前方のロボットに接触したら反転して進む」と「前方のロボットに接触したらそのロボットを右側から避けて通り、再びライン上に戻って進む」ができなかった。
-次回の課題までには全員がラインとレースや光センサーのプログラムを作れるように頑張ります。
**工夫した点 [#le9713c2]
 課題1の時と同様できる限りシンプルにした。
-課題1の時と同様できる限りマシンをシンプルにした。
-センサーが1つやと上手く曲がってくれずにはみ出したりしてたので光センサーを2つつけてみました(上図を参照)。そうすることにより、前よりもスムーズな動きが可能となりうまくいきました。
また光センサーのつける位置を黒い線の幅に合うように工夫しました。
**感想 [#ib343e2a]
-難しかったがラインとレースだけはできた。
-この課題をやる週にどこかの教室にロボットを忘れてしまいあま
りたいしたロボットは出来なかったが結構上手くいったのでよか
ったと思う。
**コメントお願いします [#x3860049]
#comment


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