2006b/A1/課題3左

センサー1個のプログラム

#define Turn_Time 360   //最初の旋回の時間。
#define Do 523  //音の定義。
#define Re 587
#define Mi 659
#define Fa 698
#define Sol 784
#define Ra 880 

task play_music()           //きらきら星
{
       
       while(true)
       {
           PlayTone(Do,60); Wait(65);
           PlayTone(Do,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Sol,120); Wait(125); 

           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Do,120); Wait(125);

           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,120); Wait(125);

           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,120); Wait(125);

           PlayTone(Do,60); Wait(65);
           PlayTone(Do,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Sol,120); Wait(125);

           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Do,120); Wait(125);
           Wait(100);
           }
           }
            

task main()
{
     SetSensor(SENSOR_1,SENSOR_LIGHT);       //光センサーの定義。
     SetSensor(SENSOR_2,SENSOR_LIGHT);       //光センサーの定義。
     int light_max=0;                                      //変数(光の値)の定義
     int time_max;                                           //変数(回転時の時間)の定義
     ClearTimer(0);
     OnFwd(OUT_A);                                        //ここで旋回。
     OnRev(OUT_C);
     start play_music;                                      //回っている間にきらきら星。
     while(FastTimer(0) < Turn_Time){            //この間に、光の最大値と、その時間をはかる。
       if(SENSOR_1 > light_max){
          light_max=SENSOR_1;
          time_max=FastTimer(0);
      
       }
}
       stop play_music;                                   //きらきら星ストップ。
       OnFwd(OUT_C);                                    //ここで回転して光の下へ。
       OnRev(OUT_A);
       Wait(Turn_Time-time_max);
       
       while(true){                                           //光の最大値によって分岐し光についていく。
         if(light_max>60){
         if(SENSOR_1>light_max-20){
         OnFwd(OUT_A+OUT_C);}
         else{
         OnFwd(OUT_A);
         OnRev(OUT_C);}
         
         }
         if(45<=light_max<=60){
         if(SENSOR_1>light_max-5){
         OnFwd(OUT_A+OUT_C);}
         else{
         OnFwd(OUT_A);
         OnRev(OUT_C);}
         
         }
         else{
         if(SENSOR_1>light_max){
         OnFwd(OUT_A+OUT_C);}
         else{
         OnFwd(OUT_A);
         OnRev(OUT_C);}
         
         } 



}
}

センサー1個のプログラム改良版

#define Turn_Time 360            //最初の旋回時間
#define Turn_Time2 180          //二回目以降の旋回時間
#define Do 523  //音の定義。
#define Re 587
#define Mi 659
#define Fa 698
#define Sol 784
#define Ra 880 

task play_music()           //きらきら星
{
       
       while(true)
       {
           PlayTone(Do,60); Wait(65);
           PlayTone(Do,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Sol,120); Wait(125); 

           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Do,120); Wait(125);

           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,120); Wait(125);

           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,120); Wait(125);

           PlayTone(Do,60); Wait(65);
           PlayTone(Do,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Sol,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Ra,60); Wait(65);
           PlayTone(Sol,120); Wait(125);

           PlayTone(Fa,60); Wait(65);
           PlayTone(Fa,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Mi,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Re,60); Wait(65);
           PlayTone(Do,120); Wait(125);
           Wait(100);
           }
           }
            

task main()
{
     SetSensor(SENSOR_1,SENSOR_LIGHT);       //光センサーの定義。
     SetSensor(SENSOR_2,SENSOR_LIGHT);       //光センサーの定義。
     int light_max=0;                                      //変数(光の値)の定義
     int time_max;                                           //変数(回転時の時間)の定義
     ClearTimer(0);
     OnFwd(OUT_A);                                        //ここで旋回。
     OnRev(OUT_C);
     start play_music;                                      //回っている間にきらきら星。
     while(FastTimer(0) < Turn_Time){            //この間に、光の最大値と、その時間をはかる。
       if(SENSOR_1 > light_max){
          light_max=SENSOR_1;
          time_max=FastTimer(0);
      
       }
}
       stop play_music;                                   //きらきら星ストップ。
       OnFwd(OUT_C);                                    //ここで回転して光の下へ。
       OnRev(OUT_A);
       Wait(Turn_Time-time_max);
       
      while(true){
        
       if(SENSOR_1>=light_max){
        OnFwd(OUT_A+OUT_C);                     //光センサーが最大値以上ならば前進。
       }
       else{                                                   //光センサーが最大値よりも小さくなった場合
        light_max=0;                                    //光の最大値初期化
        time_max=0;                                    //タイマーの時間も初期化
        OnFwd(OUT_A);                                //ここから回転し始める。
        OnRev(OUT_C);
        Wait(90);
        ClearTimer(1);                                  //タイマースタート。
        OnFwd(OUT_C);
        OnRev(OUT_A);
        start play_music;                              //きらきら星スタート。
    while(FastTimer(1)<Turn_Time2){
        if(SENSOR_1 > light_max){               //光センサーの値が大きかったら
         light_max=SENSOR_1;                    //光の最大値を入れ替える。
         time_max=FastTimer(1);                //時間も記録する。
        }
      }
        stop play_music;                             //きらきら星ストップ。
        OnFwd(OUT_A);                              //旋回して光の下へ。
        OnRev(OUT_C);
        Wait(Turn_Time2-time_max);
        }
       }

}

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