2006a/C3/課題3左 このPGの課題、かろうじて動くがまだ滑らかに動くことができない

#define right SetPower(OUT_A,7);SetPower(OUT_C,3);OnFwd(OUT_C+OUT_A);//右に曲がりつつ進む
#define left SetPower(OUT_C,7);SetPower(OUT_A,3);OnFwd(OUT_C+OUT_A); //左に曲がりつつ進む
#define stoP Off(OUT_A+OUT_C);                                       //停止
#define senkair  SetPower(OUT_C+OUT_A,10);OnRev(OUT_A);OnFwd(OUT_C);  //右旋回
#define senkail SetPower(OUT_C+OUT_A,10);OnRev(OUT_C);OnFwd(OUT_A);   //左旋回
#define TURN_TIME 400
task main()
{ 
   SetPower(OUT_A+OUT_C,10);
   SetSensor(SENSOR_1, SENSOR_LIGHT);
   SetSensor(SENSOR_3, SENSOR_LIGHT);
   int Llm=0,time_max=0;
   ClearTimer(0);//タイマーセット
   while(FastTimer(0)<TURN_TIME)//ライトセンサー1の
   {                            //光度の最大値を探す(最大値をLlmと定義する)
   senkair;                     //最大値を見つけたら
       if(SENSOR_1>Llm)         //右旋回した時間(time_maxと定義)+少し の時間左旋回して光源が
       {                        //ライトセンサー1と3の大体
       Llm=SENSOR_1;            //真ん中に着て止まる
       time_max=FastTimer(0);
       }
   stoP;
   }
   senkail;
   Wait(TURN_TIME+40-time_max);
   stoP;
   while(true)
   {
        if(SENSOR_3+SENSOR_1>Llm*2-60)//センサ1、3の光度がある数値(Llm×2−60)未満になったら
        {                             //光源を見失ったとして
        senkair;                      //光度に比例した音を鳴らし
        PlayTone(SENSOR_1*3,10);      //右旋回しながら光源を探す
        }
            while(SENSOR_3+SENSOR_1>Llm*2-60)//センサ1、3の光度がある数値(Llm×2−60)より上のとき
            {
                if(SENSOR_1>SENSOR_3)     //センサ1の光度のほうが大きいとき
                {right;                   //右に曲がりつつ進む
                }
                else if(SENSOR_3>SENSOR_1)//センサ3の光度のほうが大きいとき
                {left;                    //左に曲がりつつ進む
                }
            }
    }
}

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