[[2006b/A1/課題3左]]
#contents
*センサー1個のプログラム [#s70e2974]


 #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個のプログラム改良版 [#p026a5f1]
 #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