[[2007a/MemberOnly/進行状況A]]
 /**/
#contents

 #define MOTOR OUT_A+OUT_C  //
 #define THRESHOLD  40             // 闘値を設定
 #define RUN_TIME  150             //
*課題2・黒い線に沿って動くロボット [#ge99588a]
  2つの光センサーが白を感知して進みます。それによって、ロボット本体を黒の線上を進むようにしました。 
   
**【メンバー】 [#t1e2029d]
 ・宮原
 ・大益

**【ロボット紹介】 [#j76913f3]

**【プログラム】 [#q7a68997]
 #define MOTOR OUT_A+OUT_C         
 #define THRESHOLD  40                      // 闘値を設定
 #define RUN_TIME  150                 

 task main ()
 {
        SetSensor(SENSOR_1,SENSOR_LIGHT);// センサ1が光センサであることを定義
        SetSensor(SENSOR_3,SENSOR_LIGHT);// センサ3が光りセンサであることを定義
        SetSensor(SENSOR_2,SENSOR_TOUCH);// センサ2がタッチセンサであることを定義
        SetSensor(SENSOR_1,SENSOR_LIGHT);               // センサ1が光センサであることを定義
        SetSensor(SENSOR_3,SENSOR_LIGHT);               // センサ3が光センサであることを定義
        SetSensor(SENSOR_2,SENSOR_TOUCH);               // センサ2がタッチセンサであることを定義
      
        while(true){
                if(SENSOR_1 > THRESHOLD){
                    if(SENSOR_3 > THRESHOLD){
                        OnFwd(MOTOR);
                    } else {
                         OnFwd(OUT_A);
                         Off(OUT_C);// センサ1が反応(黒線から外れた)したとき、Aを進めCを止める
                         Off(OUT_C);           // センサ1が反応(黒線から外れた)したとき、Aを進めCを止める
                        }
                  } else {
                         if(SENSOR_3 > THRESHOLD){                      
                         Off(OUT_A); 
                         OnFwd(OUT_C);// センサ3が反応(黒線から外れた)したとき、Aを止めCを進める
                         OnFwd(OUT_C);       // センサ3が反応(黒線から外れた)したとき、Aを止めCを進める
                         }else{
                           OnFwd(MOTOR);
                           Wait(20);
                           Off(MOTOR);// 2つの光センサが黒線上にあるとき2秒前進する
                           Off(MOTOR);          //  2つの光センサが黒線上にあるとき2秒前進する
                           }
                    }
             
               OnFwd(MOTOR);                              
               until(SENSOR_2 == 1);                     //  タッチセンサーが反応したら
               OnRev(MOTOR);                               
               Wait(30);                                          // 3秒間後退
               Off(MOTOR);                                    
               Wait(100);                                        // 100秒間停止
            }
 }

***衝突時の対応 [#vd4c4ef4]
    
   OnFwd(MOTOR);                              
   until(SENSOR_2 == 1);                     //  タッチセンサーが反応したら
   OnRev(MOTOR);                               
   Wait(30);                                          // 3秒間後退
   Off(MOTOR);                                    
   Wait(100);                                        // 100秒間停止

 いくつかのロボットをコース上で走らせるので、衝突時の対応をプログラムの最後の辺に組み込みました。衝突するとタッチセンサーが反応し、すぐに3秒間後退、10秒間停止して、また前進します。


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