2009a/A8/課題2右  

#define THRESHOLD 47     //閾値を47に設定

sub right()        //右回りに向きを変える動作
{  OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(80);
   Off(OUT_A+OUT_C);
   Wait(50); }
sub left()                 //左回りに向きに向きを変える動作
{ OnRev(OUT_A);
  OnFwd(OUT_C);
  Wait(100);
  Off(OUT_A+OUT_C);
  Wait(50); }
int a;
task main ()
{a=0;
 SetSensor(SENSOR_1,SENSOR_LIGHT);  //センサー1に光センサーをセット
 SetSensor(SENSOR_2,SENSOR_TOUCH);  //センサー2にタッチセンサーをセット
 SetSensor(SENSOR_3,SENSOR_LIGHT);  //センサ−3に光センサーをセット

 while (a<2) {   //タッチセンサーが2回反応したら止まる
               if (SENSOR_1>THRESHOLD){     //センサ−1が白で 
                 if(SENSOR_3>THRESHOLD){    //センサー3も白のとき
                  OnFwd(OUT_A+OUT_C);}
               else   //センサー3が黒のとき
                { OnFwd(OUT_A);
                  Off(OUT_C); } }
               else{           //センサー1が黒で
               if(SENSOR_3>THRESHOLD){    //センサー3が白のとき
               OnRev(OUT_A);
               OnFwd(OUT_C); } }
               if(SENSOR_2 == 1)    //タッチセンサーに何かがあたったとき
               { OnRev(OUT_A+OUT_C);   //少しバックして距離をとる
                 Wait(25);
                 Off(OUT_A+OUT_C);
                 Wait(50);
               left();        //左回りに向きを変える
               OnFwd(OUT_A+OUT_C);   //障害物の横を通れるくらい移動する
               Wait(180);
               Off(OUT_A+OUT_C);
               Wait(50);
               right();         //右回りに向きを変える
               OnFwd(OUT_A+OUT_C);   //障害物の横を通過する
               Wait(300);
               Off(OUT_A+OUT_C);
               Wait(50);
               right();        //右回りに向きを変える
               OnFwd(OUT_A+OUT_C);   //ラインのところに戻る
               Wait(180);
               Off(OUT_A+OUT_C);
               Wait(50);
               left();         //進行方向を向く
               OnRev(OUT_A+OUT_C);   //少し下がることでいろんな場所に対応
               Wait(60);
               Off(OUT_A+OUT_C);
               Wait(50);
               a=a+1;              /障害物を避けた回数をカウント
               } 
  }
 }

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-17 (金) 11:26:06