2006a/練習問題

課題2 黒い線を沿って走るロボット

ぶつかると反転して進むロボット

制作者:トミー
掲載日:6月16日
#define turn_RIGHT ;OnFwd(OUT_A);OnRev(OUT_C);Wait(150);

task main () 
{
      SetSensor(SENSOR_1, SENSOR_LIGHT);
      SetSensor(SENSOR_3,SENSOR_LIGHT);
      SetSensor(SENSOR_2,SENSOR_TOUCH);
      while (true) {
          OnFwd(OUT_A+OUT_C);
              if (SENSOR_1 <  45)  {
                    OnFwd(OUT_C);
               OnRev(OUT_A);
               until (SENSOR_1>45);}
         if(SENSOR_3<40) {
           OnFwd(OUT_A);
           OnRev(OUT_C);
            until(SENSOR_3>45);      }     
            
            
     if(SENSOR_2==1) {    //タッチセンサーが反応した場合
      OnRev(OUT_A+OUT_C);    //0.8秒後退
      Wait(80);
      turn_RIGHT  //逆向きになるまで回転
      }
  }    
}

ほかのロボットにあたるとよけるロボット

 制作者:トミー
 掲載日:6月23日
  #define THRESHOLD 40
task main ()
{
SetSensor(SENSOR_1, SENSOR_LIGHT);/センサー1をライトセンサーと宣言
SetSensor(SENSOR_2, SENSOR_LIGHT);/センサー2をライトセンサーと宣言
SetSensor(SENSOR_3, SENSOR_TOUCH);/センサー3をタッチセンサーと宣言    
OnFwd(OUT_A+OUT_C);
while (true) {
if (SENSOR_3 == 1) {
OnRev(OUT_A+OUT_C) ; Wait(50);0.5秒後退する
Off(OUT_A+OUT_C);
OnRev(OUT_C);
Wait(150);/モーターCを1.5秒逆回転
OnFwd(OUT_A+OUT_C);
Wait(150);/1.5秒進む
Off(OUT_A);
Wait(150);1.5秒左回転させる
OnFwd(OUT_A);
Wait(150);
Off(OUT_A);
Wait(150);
OnFwd(OUT_A);/モーターAを動かし元のコースに戻る
} else {
if (SENSOR_1 < 40) {
Off(OUT_A);
OnFwd(OUT_C);センサー1に黒線が入ると左回転
}                                                                       
if (SENSOR_2 < 40) { 
OnFwd(OUT_A);
Off(OUT_C);センサー2に黒線が入ると右回転
}
}
}
} 

苦労した点

 ・やっぱりタッチセンサーの付け方ですかね。光センサーのほうはある程度 付けやすかったのですが…。そして、なにより急なカーブを曲がる時が難しかったですね。なかなかうまく曲がりきれなくて何度もコースアウトをしてしまいました。そうして、何度もプログラムを改善させていくといつのまにかうまく曲がれるようになっていました。

工夫した点

 ・光センサーを機体の中央にもってきました。どうしてかというと、曲がるときに光センサーを前のほうに装着しているとすんごい誤差が生じるので真ん中に持ってきました。

反省点

 一番の反省点は、なかなかロボのために集まることができなくて大変多くの時間を必要としたところです。次からは、できるだけ集まって期限に間に合うように進めていきたいです。

掲示板

コメントをどうぞ!





トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-06-23 (金) 13:56:36