2005/A2/課題3

黒線に沿ってじわじわと進むロボ

モーター2つ使用

説明

モーター2つ、センサーも2つ使用して黒線をセンサーで挟んで進むようにした。
コースは「マ」の字。

プログラム

task main()
{
  SetSensor(SENSOR_2,SENSOR_LIGHT);//センサー2を定義
  SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を定義
  while(true){                    
       if (SENSOR_2< 42){          //センサー2がラインに乗ると
         Off(OUT_A+OUT_C);         //モーターを一度止めて
          OnFwd(OUT_C);            //右回転
         OnRev(OUT_A);
     } if (SENSOR_3< 40){          //センサー3がラインに乗ると
         Off(OUT_A+OUT_C);         //モーターを一度止めて
          Wait(10);                //左回転
          OnFwd(OUT_A);
          OnRev(OUT_C);
     } else {                      //どちらも線に乗ってないなら
         OnFwd(OUT_A+OUT_C);       //直進
     }
 }
}

感想

センサーの感度が左右で違うので調整に手間どったのと、
文字に急な曲がり角があったのでセンサーの位置も調整しないと曲がり切れなかったりした。
モーターを一度止めるのは慣性でラインを超えてしまうのを防ぐため。
片方のモーターを止めるだけにしたら走るの自体は楽だったけど、
速く走り切ることを重視して、こっちにした。

モーターを1つ使用

説明

今度はモーターもセンサーも1つ。
ベースはシークレットのとほとんど同じ構造だけど、
最初はセンサー2つでやろうとしてたので無駄なパーツがついたままでした。
センサーを1つにしたのは挟んで進むのは右回転がひつようだったからです。

プログラム

task main()
{
  SetSensor(SENSOR_2,SENSOR_LIGHT); //センサー2を定義
  ClearTimer(0);
  while ( Timer(0) <= 50 ) {
      if (SENSOR_2 < 43) {          //黒線上にいるとき
          OnFwd(OUT_A);
     } else {                       //外れたとき
          OnRev(OUT_A);
     }
  }}

感想

説明書のヒントを参考に作ったロボだと左回転しかできないので、タイマーを試してみたが上手くできていなかった。
この後改良したら動作がさらに怪しくなった。
結局「マ」のコースは完走できなかったけど、
1モーターでの回転とタイマーについて多少わかってきた。
新しく出たヒントを読んでベース作成時に失敗してた点に気づけたので、
また作り直してみたいと思う。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-09 (金) 16:02:37