[[2006b/A6/R Room/mission 3]]

#contents

*プログラム [#ff109757]

**製作者/TAKA [#qa88c98f]

とりあえず一気に作るのは難しいと感じたので、別々に作りました。

***旋回して、光を見つけてその方向に進む[#d269e04b]

 #define TURN_TIME 300     // 一回転するときにかかる時間
                    
 task main () {
 
  SetSensor (SENSOR_1,SENSOR_LIGHT);  // センサー1を光センサーに
  int light_max=0,time_max;  // light_maxとtime_maxを定義
   
 while(true)   // trueのとき
 {
  ClearTimer(0); // タイマー0をクリアー
  OnFwd(OUT_A);  // Aのモーターを正回転
  OnRev(OUT_C);  // Cのモーターを負回転 → 車体の回転
  
    while(FastTimer(0)<TURN_TIME) // 一回転の時間よりもFastTimer(0)の方が小さいとき
    {
      if(SENSOR_1>light_max)  // もしセンサー1がlight_maxよりも大きかったら
      {
       light_max=SENSOR_1; // センサー1をlight_maxに設定
       time_max=TURN_TIME-FastTimer(0)+10; // time_maxをこの時間に設定
      }
    }
 
     Off(OUT_A+OUT_C);  // モーターストップ
 
    OnFwd(OUT_A+OUT_C); // 前進
  }
 }
**音楽を鳴らすプログラム [#z1b05577]
-チューリップの歌(題名がわかりません) 
 #define Do 523        // 音の定義 ド 
 #define Re 587    //      レ
 #define Mi 659    //      ミ
 #define Fa 698    //      ファ
 #define So 784    //      ソ
 #define Ra 880    //      ラ
 #define Si 988    //      シ
 #define Doo 1047   //      ド
 
 task play_music()
 {
     while(true)
     {
    PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      
      PlayTone(So,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,30);Wait(30);
      
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
 
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
 
      PlayTone(So,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Do,30);Wait(30);
       
      PlayTone(So,25);Wait(30);
      PlayTone(So,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(So,25);Wait(30);
      PlayTone(Ra,25);Wait(30);
      PlayTone(Ra,25);Wait(30);
      PlayTone(So,30);Wait(30);
      
      PlayTone(Mi,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Do,30);Wait(30);
      }
 }


***課題のプログラム [#p96dff2a]

 #define turn_time 300   // 一回転にかかる時間
  
 #define Do 523   // 音の定義
 #define Re 587
 #define Mi 659
 #define Fa 698
 #define So 784
 #define Ra 880 
 #define Si 988
 #define Doo 1047
 
 
 task play_music_1()  
 {
     while(true){
     
                 PlayTone(SOUND_CLICK); // 音を鳴らす
                 }
 }
  
 task play_music_2()
 {
     while(true)      // 上に書いた曲を鳴らすプログラム
    {
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30); 
 
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30); 
 
      PlayTone(So,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,30);Wait(30); 
 
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
 
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
 
      PlayTone(So,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Do,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Do,30);Wait(30);
 
      PlayTone(So,25);Wait(30);
      PlayTone(So,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(So,25);Wait(30);
      PlayTone(Ra,25);Wait(30);
      PlayTone(Ra,25);Wait(30);
      PlayTone(So,30);Wait(30);
 
      PlayTone(Mi,25);Wait(30);
      PlayTone(Mi,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Re,25);Wait(30);
      PlayTone(Do,30);Wait(30);
     } 
 }
 
 
 task main()
 {
   SetSensor(SENSOR_2,SENSOR_LIGHT); // センサー2を光センサーと定義
   int lght_max=0,time_max;  // light_maxとtime_maxを設定 
   start play_music_2 // music_2を鳴らす
   while(true)   
   { 
    ClearTimer(0);  // タイマー0をクリアー
    OnFwd(OUT_A);   // Aのモーターを正回転
    OnRev(OUT_C);   // Cのモーターを負回転
    
      while(FastTimer(0)<TURN_TIME); // TURN_TIMEがFastTimer(0)より大きくなったら
      {
       if(SENSOR_2>light_max) // もしセンサー2がlight_maxより大きくなったら
       {
       light_max=SENSOR_2;  // light_maxをセンサー2の値にする
       start play_music_1;Wait(30); // music_1を鳴らす
       stop play_music_1  // music_1を止める
       time_max=TURN_TIME-FastTimer(0)+10; // time_maxをこの値にする
       }
      } 
 
      Off(OUT_A+OUT_C);  // ストップ
      stop play_music_2; // music_2を止める
      
      OnFwd(OUT_A+OUT_C); 
 
    if(SENSOR_2<light_max)  // もしlight_maxがセンサー2の値より大きくなったら
    {
    Off(OUT_A+OUT_C);  とまる
    Wait(30); 
  
  while(true)  // ※ここから下のプログラムは上のプログラムを繰り返すので説明省略
   {
    ClearTimer(0);
    OnFwd(OUT_A);
    OnRev(OUT_C);
 
      while(FastTimer(0)<TURN_TIME);
      {
       if(SENSOR_2>light_max)
       {
       light_max=SENSOR_2;
       start play_music_2;Wait(30);
       stop play_music_1
       time_max=TURN_TIME-FastTimer(0)+10;
       }
      } 
 
      Off(OUT_A+OUT_C);
      stop play_music_2;
       
 
      OnFwd(OUT_C);
      OnRev(OUT_A);
 
      Wait(time_max);
      Off(OUT_A+OUT_C);
 
      OnFwd(OUT_A+OUT_C);
      } 
 }
      

**製作者/またたび [#de77bb3b]

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