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


 #define Turn_Time 360
 #define Do 523
 #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()
 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;
      SetSensor(SENSOR_1,SENSOR_LIGHT);       //光センサーの定義。
      SetSensor(SENSOR_2,SENSOR_LIGHT);       //光センサーの定義。
      int light_max=0;                                      //変数(光の値)の定義
      int time_max;                                           //変数(回転時の時間)の定義
      ClearTimer(0);
      OnFwd(OUT_A);
      OnFwd(OUT_A);                                        //ここで旋回。
      OnRev(OUT_C);
      start play_music;
      while(FastTimer(0) < Turn_Time){
      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);
        stop play_music;                                   //きらきら星ストップ。
        OnFwd(OUT_C);                                    //ここで回転して光の下へ。
        OnRev(OUT_A);
        Wait(Turn_Time-time_max);
        
        while(true){
        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);}
          
          } 
 
 
 
 }
 }


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