2006a/MemberOnly/進行状況A

ライントレーサ

ライントレーサプログラム

制作 A4 たろう
#define S1 SENSOR_1    //センサ−1をS1と定義
#define S2 SENSOR_2  //センサ−2をS2と定義
#define S3 SENSOR_3  //センサ−3をS3と定義
#define C 43      //白と黒の境の値をCと定義
#define fwd OnFwd(OUT_A+OUT_C)  //「前進」をfwdと定義
#define rev OnRev(OUT_A+OUT_C)  //「後退」をrevと定義

task main(){                                 //メインループ
   SetSensor(S1,SENSOR_LIGHT);  ////
   SetSensor(S2,SENSOR_TOUCH);//センサ1と3を光、2をタッチセンサと定義
   SetSensor(S3,SENSOR_LIGHT);  //////////////
int R,L,FS1,FS3;  //変数を宣言   
   while(true){

      if(S2==1){           //追いついたときの方向転換
         OnFwd(OUT_A);
         OnRev(OUT_C);
         Wait(90);
        while(S3>=C){
         OnFwd(OUT_A);
         OnRev(OUT_C);
                    }
               }

      fwd;     //前進  
    
      while(S1<=C && S3>=C){   
         L=1;
         R=0;
                                        }  //直前の旋回方向「左」を保持する
                                        
      while(S3<=C && S1>=C){
         R=1;
         L=0;
                                        }  //直前の旋回方向「右」を保持する
                                        
      if(S1>=C && S3>=C){
         if(L==1){     //もし機体が右に外れているのならば、
            until(S1<=C){  //左センサが線に乗るまで
               FS1=1;
               Off(OUT_A);  //左に回転する
                              }
            while(FS1==1 && S1<=C){ //直前まで上のループに入っていたら、線がセンサの真ん中に入るまで
               FS1=2;
               Off(OUT_A);  //さらに左に回転する
                                              }
            if(FS1==2){
               FS1=0;  //上の2つのループを経ていたら
               L=0;   //パラメータを初期化して終了
                          }
                   }
         if(R==1){     //もし機体が左に外れているのならば、
            until(S3<=C){  //右センサが線に乗るまで
               FS3=1;
               Off(OUT_C);  //右に回転する
                              }
            while(FS3==1 && S3<=C){  //直前まで上のループに入っていたら、線がセンサの真ん中に入るまで
               FS3=2;
               Off(OUT_C);  //さらに右に回転する
                                              }
            if(FS3==2){
               FS3=0;  //上の2つのループを経ていたら
               R=0;   //パラメータを初期化して終了
                          }
                   }
                                    }
                                     
                  }
               }

苦労した点

工夫した点

反省、感想

何かありましたら



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-19 (水) 15:20:05