*課題3:光を追いかけるロボット [#z4541206]
Under construction...

#contents

*課題3についての説明 [#vc099747]
**課題3についての説明 [#vc099747]
懐中電灯の光を追いかけて進むロボットを製作し、以下の中から2種類以上のプログラムを作成せよ。


1. 光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す

2. 光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す

3. 光源を見失っていないときにはある曲を演奏し、見失った時には別の曲警を演奏しながら光源を探す

4. 上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加する

ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。

(期限:7月6日)〜2006a/練習問題より抜粋〜
**[[NQC入門/6. サウンド機能を使う:http://yakushi.shinshu-u.ac.jp/robotics/?cmd=read&page=NQC%C6%FE%CC%E7%2F6.%20%A5%B5%A5%A6%A5%F3%A5%C9%B5%A1%C7%BD%A4%F2%BB%C8%A4%A6&word=NQC%C6%FE%CC%E7%2F6.%20%A5%B5%A5%A6%A5%F3%A5%C9%B5%A1%C7%BD%A4%F2%BB%C8%A4%A6]] [#e3ed6fb5]

*光を追いかける&曲を演奏するRCX [#yad929fd]
写真うp
**スペックや外観について [#a40a9292]
***完成までのプロセス [#x151bc7b]
***使用した曲 [#l00b4b98]
*完成までの過程 [#j6f3b5a8]

*プログラム [#w48aa638]
comment please...
 作成者:ヨコチン/トシ/J/マサ
 作成日時:7/5,

**光を追うロボット [#df561cd3]
***光を追うロボットを作ってみる [#hd848129]

-いきなり課題に挑むのは難しいと思い、まずは光を単純に追うロボットの作成に挑む。

-その時のロボット

-その時のプログラミング

 プログラミング作成者:ヨコチン/トシ/J/マサ

 #define go_straight OnFwd(OUT_A+OUT_C);       //直進
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右旋回
 #define turn_left OnFwd(OUT_C);OnRev(OUT_A);  //左旋回
 #define minus 15                              //マイナス
 
 int max;   //maxを定義
 int time;  //timeを定義
 
 task main()
 {
     SetSensor(SENSOR_2,SENSOR_LIGHT);   //センサー2:光センサー
 
     max=SENSOR_2;                       //センサー2をmaxに指定
     time=Timer(0);                      //timeをタイマー0に指定
     ClearTimer(0);                      //タイマー0をリセット
     while(Timer(0)<=14)                 //タイマー0が14以下の時
     {
         turn_right                      //右旋回
         if(SENSOR_2>max)                //センサー2が最大値以上なら
           {
            ClearTimer(1);               //タイマー1をリセット
            max=SENSOR_2 ;               //センサー2を最大値に指定
           }
         else                            //そうでなければ
           {
            max=max;                     //maxをそのまま
            time=Timer(1);               //timeをタイマー1に指定
           }
    }
 
    ClearTimer(1);                       //タイマー1をリセット
    while(Timer(1)<=time)                //timeがタイマー以下の時
    {turn_left}                          //左旋回
 
    while(true)
    {
         if(SENSOR_2>=max-minus)         //センサー2が最大値−マイナス以上の時
           {go_straight}                 //直進
         if(SENSOR_2<max-minus)          //センサー2が最大値−マイナス未満の時
           {
            turn_right                   //右旋回
            ClearTimer(2);               //タイマー2をリセット
            until((SENSOR_2>=max-minus)||(Timer(2)==5));  //センサー2が最大値−マイナス以上、またはタイマー2が5まで
           }
         if(SENSOR_2<max-minus)          //まだセンサー2が最大値−マイナス未満の時
           {
            turn_left                    //左旋回
            until(SENSOR_2>=max-minus);  //センサー2が最大 値−マイナス以上まで
           }
         }
 }


-キッドは簡単に作れたが、プログラミグが一気に難しくなり、困難を極めた。~
そのため過去の先輩たちのプログラミングを参考に挑戦したところうまくいったので、オリジナルにアレンジしていきたい。

--正直一から自分たちで作るのは無理があった、しかし少しずつ学んでいこうと思う。


**曲を演奏するロボット [#q58793f9]
***曲を演奏するロボットを作ってみる [#if02251b]

-これもまた、いきなり課題に挑むのは難しいため、曲の作成に挑戦

-そのときのプログラム→使った曲♪

**課題一つ目 [#q16969d7]
 光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す

-プログラミング
 #define go_straight OnFwd(OUT_A+OUT_C);
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define Do  523
 #define Re  587
 #define Mi  659
 #define Fa  698
 #define Sol 784
 
 task play_music()
 {
 while(true)
 {
 
    PlayTone(Mi,20); Wait(30);  
    PlayTone(Mi,20); Wait(30);  
    PlayTone(Fa,20); Wait(30);  
    PlayTone(Sol,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,30); Wait(40);
    PlayTone(Re,15); Wait(20);
    PlayTone(Re,30); Wait(40);
    
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,30); Wait(40);
    PlayTone(Do,15); Wait(20);
    PlayTone(Do,15); Wait(40);
    
    PlayTone(Re,25); Wait(30);
    PlayTone(Re,25); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,15); Wait(20);  
    PlayTone(Fa,15); Wait(20); 
    PlayTone(Mi,15); Wait(20);
    PlayTone(Do,15); Wait(20);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,15); Wait(20);
    PlayTone(Fa,15); Wait(20);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,30); Wait(30);
    PlayTone(Re,30); Wait(30);
    PlayTone(Sol,30); Wait(30);
    
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,30); Wait(40);
    PlayTone(Do,15); Wait(20);
    PlayTone(Do,15); Wait(20);
    Wait(40);
    }
    }
    
    task main ()
    {
    SetSensor(SENSOR_2,SENSOR_LIGHT);
    while(true)
     {
     start play_music;
       while (SENSOR_2 <50)
       {
       turn_left;
       }
       while (SENSOR_2 >50)
       {
       stop play_music;
       go_straight;
       }
      }
     }

**課題二つ目 [#yfaa8901]
 光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す

-プログラミング
#define go_straight OnFwd(OUT_A+OUT_C);
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define Do  523
 #define Re  587
 #define Mi  659
 #define Fa  698
 #define Sol 784
 
 task play_music1()
 {
 while(true)
 {
 
    PlayTone(Mi,20); Wait(30);  
    PlayTone(Mi,20); Wait(30);  
    PlayTone(Fa,20); Wait(30);  
    PlayTone(Sol,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,30); Wait(40);
    PlayTone(Re,15); Wait(20);
    PlayTone(Re,30); Wait(40);
    
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,30); Wait(40);
    PlayTone(Do,15); Wait(20);
    PlayTone(Do,15); Wait(40);
    
    PlayTone(Re,25); Wait(30);
    PlayTone(Re,25); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,15); Wait(20);  
    PlayTone(Fa,15); Wait(20); 
    PlayTone(Mi,15); Wait(20);
    PlayTone(Do,15); Wait(20);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,15); Wait(20);
    PlayTone(Fa,15); Wait(20);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,30); Wait(30);
    PlayTone(Re,30); Wait(30);
    PlayTone(Sol,30); Wait(30);
    
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Sol,20); Wait(30);
    PlayTone(Fa,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Do,20); Wait(30);
    PlayTone(Re,20); Wait(30);
    PlayTone(Mi,20); Wait(30);
    PlayTone(Re,30); Wait(40);
    PlayTone(Do,15); Wait(20);
    PlayTone(Do,15); Wait(20);
    Wait(40);
    }
    }
    task play_music2()
    {
    while(true)
    {
    PlayTone(Do,25); Wait(20);  
    PlayTone(Re, 5); Wait(20);  
    PlayTone(Mi,25); Wait(20);  
    PlayTone(Do, 5); Wait(20);
    PlayTone(Mi,25); Wait(20);
    PlayTone(Do, 5); Wait(20);
    PlayTone(Mi,35); Wait(40);

    PlayTone(Re,25); Wait(20);
    PlayTone(Mi,10); Wait(20);
    PlayTone(Fa,10); Wait(20);
    PlayTone(Fa,10); Wait(20);
    PlayTone(Mi,10); Wait(20);
    PlayTone(Re,15); Wait(20);
    PlayTone(Fa,35); Wait(40);
   
    PlayTone(Mi,25); Wait(20);
    PlayTone(Fa, 5); Wait(20);
    PlayTone(Sol,25); Wait(20);  
    PlayTone(Mi, 5); Wait(20);
    PlayTone(Sol,25); Wait(20);
    PlayTone(Mi, 5); Wait(20);
    PlayTone(Sol,25); Wait(40);
    }
    }
    
    task main ()
    {
    SetSensor(SENSOR_2,SENSOR_LIGHT);
    while(true)
     {
            stop play_music2;
         start play_music1;
       while (SENSOR_2 <50)
       {
         turn_left;
       }
                stop play_music1;
       start play_music2;
       while (SENSOR_2 >50)
       {
       go_straight;

       }
      }
     }

***今回の課題に使用したキッド [#w9814006]


**苦労した点 [#eef74b11]

**工夫した点 [#tbf400b5]

**完成後期 [#n442d13c]


*掲示板 [#g307e0d4]
コメントやアドバイスお願いします☆
#comment


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