[[戻る>2005/A6]]

*演奏しながら動くロボットのプログラム (仮)[#l14bf5a5]
* 演奏するロボットと曲に合わせて踊るロボットのプログラム [#a6e5d4d5]
#ref(2005/A6/課題5/animal.jpeg.jpg,100%,center)
&size(40){&color(red){犬};・&color(blue){ねずちゅー};・&color(green){ネコ};};
**スケーターズワルツ [#e8c84f54]
 // 製作日:12月2日
 // 製作者:ジョニー
 #define Do 523   
 #define Re 587
 #define Mi 659
 #define Fa 698
 #define So 784
 #define Ra 880
 #define Si 988
 #define Doo 1047
 #define Ree 1175
 task play_music()
 { 
	while(true){
		PlayTone(Mi,120);Wait(120);
		
		PlayTone(So,80);Wait(80);
		PlayTone(Ra,40); Wait(45);
		
		PlayTone(Ra,240);Wait(245);
		
		PlayTone(Fa,120);Wait(120);
		
		PlayTone(Ra,80);Wait(80);
		PlayTone(Si,40);Wait(45);
		
		PlayTone(Si,240);Wait(245);
		
		PlayTone(Ree,120);Wait(120);
		PlayTone(Doo,80);Wait(80);
		PlayTone(Mi,40);Wait(45);
		
		PlayTone(So,120);Wait(120);
		
		PlayTone(Fa,80);Wait(80);
		PlayTone(Mi,40);Wait(45);
		
		PlayTone(Mi,120);Wait(120);
		
		PlayTone(Re,120);Wait(120);
		
		PlayTone(Do,150);Wait(160);
		
		PlayTone(So,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		
		PlayTone(Ra,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		PlayTone(So,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		PlayTone(Ra,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		
		PlayTone(So,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		PlayTone(Ra,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		PlayTone(So,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		
		PlayTone(Ra,15);Wait(20);
		PlayTone(Doo,15);Wait(20);
		PlayTone(So,40);Wait(40);
		
		PlayTone(Si,30);Wait(40);
		PlayTone(Si,40);Wait(40);
		
		PlayTone(So,40);Wait(40);
		PlayTone(Si,30);Wait(40);
		PlayTone(Si,40);Wait(40);
		
		PlayTone(So,15);Wait(20);
		PlayTone(Ree,15);Wait(20);
		PlayTone(Ra,15);Wait(20);
		PlayTone(Ree,15);Wait(20);
		PlayTone(So,15);Wait(20);
		PlayTone(Ree,15);Wait(20);
		
		PlayTone(Ra,15);Wait(20);
		PlayTone(Ree,15);Wait(20);
		PlayTone(So,15);Wait(20);
		PlayTone(Ree,15);Wait(20);
		PlayTone(Ra,15);Wait(20);
		PlayTone(Ree,15);Wait(20);
		
		PlayTone(So,40);Wait(40);
		PlayTone(Doo,30);Wait(40);
		PlayTone(Doo,40);Wait(40);
		
		PlayTone(So,40);Wait(40);
		PlayTone(Doo,30);Wait(40);
		PlayTone(Doo,40);Wait(40);
	}
 } 

**こいぬのマーチ [#e8c84f54]
// 製作日:12月2日
// 製作者代表:ジョニー

#define Do  523
#define Re  587
#define Mi  659
#define Fa  698
#define Sol 784
#define Ra  880
**演奏、指揮をするロボットのプログラム [#w189ebf3]
&ref(2005/A6/課題5/cat.jpeg.jpg,100%,left); &ref(2005/A6/課題5/rat.jpeg.jpg,100%,right);
&size(30){左&color(green){ネコ}; 右&color(blue){ねずちゅー};};

task play_music()   // 音楽を演奏するタスク
{
   while (true)
   {
       PlayTone(Mi,40); Wait(40);  
       PlayTone(Do,20); Wait(40);  
       PlayTone(Mi,40); Wait(40);  
       PlayTone(Do,20); Wait(40);
ネコは音楽に合わせて尻尾を左右に振ります。
ねずちゅーは音楽にあわせて左右に回転します。 

       PlayTone(Mi,40); Wait(40);
       PlayTone(Sol,15); Wait(40);
       PlayTone(Sol,50); Wait(80);
 // 製作日:1月6日
 // 製作者:A6員(主にA6L)
 // ネコ型ロボットと、ネズミ型ロボットの二つを製作しました。
 
 #define music_time 2400
 
 task main()
  {    
    ClearTimer(0);             // Timer(0)をリセットする
    start play_music;          // 演奏を開始
   
    while(Timer(0) <= music_time)
     {
       OnFwd(OUT_A + OUT_C);   // 尻尾、ねずちゅーが右に動く
       SendMessage(1);         // Message(1)を送る
       Wait(150);              // 1.5秒間待つ
      
       OnRev(OUT_A + OUT_C);   // 尻尾、ねずちゅーが左に動く 
       Wait(150);              // 1.5秒間待つ       
 
       OnFwd(OUT_A + OUT_C);   // 尻尾、ねずちゅーが右に動く
       SendMessage(2);         // Message(2)を送る
       Wait(150);              // 1.5秒間待つ
      
       OnRev(OUT_A + OUT_C);   // 尻尾、ねずちゅーが左に動く 
       Wait(150);              // 1.5秒間待つ
     }
   
    SendMessage(3);            // Message(3)を送る
    stop play_music ;          // 演奏を停止
    Float(OUT_A+OUT_B);        // 動きも停止
  }

       PlayTone(Fa,40); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,40); Wait(80);
** 曲に合わせて踊るロボットのプログラム [#o160fdd7]
#ref(2005/A6/課題5/dog.jpeg.jpg,100%,center);
&size(30){&color(red){犬};};

       PlayTone(Mi,40); Wait(40);
       PlayTone(Do,15); Wait(40);
       PlayTone(Do,40); Wait(85);
犬は音楽に合わせて両足(四足とも)を上下させ、左右回転します。
尻尾はずっと振り続けます。

       PlayTone(Mi,40); Wait(40);
       PlayTone(Do,20); Wait(40);
       PlayTone(Mi,40); Wait(40);
       PlayTone(Do,20); Wait(40);
 // 製作日:1月6日
 // 製作者:A6員(主にA6R)
 // 犬型のロボットを作るのにかなり時間が掛かってしまった。
 
 #define first OnRev(OUT_A+OUT_B);OnFwd(OUT_C);
 #define second OnFwd(OUT_A+OUT_B);OnRev(OUT_C);
 #define fin Float(OUT_A+OUT_B+OUT_C);
 
 task main()
  {
    while (true)
     {
        ClearMessage();                 // Message() を 0 に設定
        until (Message() != 0);         // Message() に 0 以外の値が入るまで待つ
        
        if ( Message() == 1 ) first;    // 1 を受信したときには右に回りながら前足・後ろ足が上がる
        if ( Message() == 2 ) second;   // 2 を受信したときには左に回りながら前足・後ろ足が下がる
        if ( Message() == 3 ) fin;      // 3 を受信したときには止まる
     }
  }

       PlayTone(Mi,40); Wait(40);
       PlayTone(Sol,15); Wait(40);
       PlayTone(Sol,50); Wait(80);
**反省 [#lcd8215b]
 ・信号の送受信がうまくいかなくて時間が掛かり、苦労した。
 ・ねずちゅーのギアはトップシークレットのギア配置を元に、さらに最小化させた。
  苦労したがスピードも馬力もあるものが出来た。

       PlayTone(Fa,40); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,40); Wait(40);
       PlayTone(Do,40); Wait(40);
       PlayTone(Mi,40); Wait(40);
       PlayTone(Do,40); Wait(90);
       
       PlayTone(Fa,80); Wait(90);
       PlayTone(Ra,80); Wait(90);
       PlayTone(Sol,80); Wait(90);
       PlayTone(Mi,80); Wait(90);
       
       PlayTone(Fa,40); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,40); Wait(40);
       PlayTone(Do,40); Wait(40);
       PlayTone(Mi,40); Wait(40);
       PlayTone(Sol,40); Wait(80);
       
       PlayTone(Fa,80); Wait(90);
       PlayTone(Ra,80); Wait(90);
       PlayTone(Sol,80); Wait(90);
       PlayTone(Mi,80); Wait(90);
       
       PlayTone(Fa,40); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,15); Wait(40);
       PlayTone(Re,40); Wait(40);
       PlayTone(Do,40); Wait(40);
       PlayTone(Mi,40); Wait(40);
       PlayTone(Do,60); Wait(100);
   }
}
#comment

task main()
{
   
    start play_music ;    // 演奏を開始
    OnFwd(OUT_A+OUT_B);   // 前進

    until (SENSOR_1 == 1);
    stop play_music ;     // 演奏を停止
    Off(OUT_A+OUT_B);     // 動きも停止
}


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