[[2005/C1/宇佐美]]

#contents

*音楽を演奏するロボット(カエルのうた):制作途中 [#u01ce26b]
**制作者 [#b3fc3b9b]
  C1一同

**プログラム [#y10357bf]
 int t
 int t;
 #define Do    523
 #define Re    587
 #define Mi     659
 #define Fa     698
 #define So     784
 #define La     881
 #define La     881          //音階指定
 #define turn_right OnFwd(OUT_A); OnRev(OUT_C); Wait(t); 
 #define turn_left OnFwd(OUT_C); OnRev(OUT_A); Wait(t);
 #define off Off(OUT_A+OUT_C);
 #define off Off(OUT_A+OUT_C);  //3つがダンスの動き
 task  play_music()
 {        
                 PlayTone(Do,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(So,50); Wait(55);
                 PlayTone(La,50); Wait(55);
                 PlayTone(So,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
 }
 }                   //カエルのうたを指定
 task message_send()
 { 
            ClearTimer(0);
            while( Timer(0) <=425 ) { SendMessage(1); }
 }
 }                   //2小節が終わるとメッセージ1を送信
 task main()
 {
               start play_music;
               start message_send;
               start play_music;     //ミュージックスタート!
               start message_send;   //メッセージ送信
               turn_right(55); off;
               turn_left(55); off;
               turn_left(55); off;
               turn_right(55); off;
               turn_right(55); off;
               turn_left(55); off;
               turn_left(55); off;
               turn_right(55); off;
               turn_right(55); off;   //左右に振れるダンス
               
               turn_left(425); off;               
               turn_left(425); off;    //左回転
               turn_right(425); off;   //右回転
               
               turn_right(425); off;
               
               turn_left(55); off;
               turn_right(55); off;
               turn_right(55); off;
               turn_left(55); off;
               turn_left(55); off;
               turn_right(55); off;
               turn_right(55); off;
               turn_left(55); off;           
               turn_left(55); off;       //左右に振れるダンス    
 }
**感想 [#y966c0fa]
 未だ制作途中。踊りは簡単なものだが、曲にばっちり合う予定。
 ロボコンが終わってから2体に分解して完成させたい。
未だ制作途中。踊りは簡単なものだが、曲にばっちり合う予定。
ロボコンが終わってから2体に分解して完成させたい。
と思って、2体作った。けど、カメには走行機能が付いていない・・・。ダンス、使用不可。でも、これはテスト最終日、つまり初MAC使用のプログラムなので、載せておきます。「カエルのうた」は先生にMACの使い方を教えて頂いて作り上げました。私事ですが、バイトなどで時間がなく、このプログラムを使用するに至るまで、課題5に時間をかけられなかったのが残念です・・・。

*指揮をとり、輪唱するロボット(カエルのうた):制作途中 [#o01c1811]
**制作者 [#w265d94f]
 C1一同
**プログラム [#hc07f44a]
 #define Do    523
 #define Re    587
 #define Mi     659
 #define Fa     698
 #define So     784
 #define La     881
 #define shiki OnFwd(OUT_B); Wait(55); Off(OUT_B);  OnRev(OUT_B); Wait(55); Off(OUT_B); OnRev(OUT_B); Wait(55); Off(OUT_B); OnFwd(OUT_B); Wait(55); Off(OUT_B);
 #define La     881            //音階指定
 #define shiki OnFwd(OUT_B); Wait(55); Off(OUT_B); 
 OnRev(OUT_B); Wait(55); Off(OUT_B); 
 OnRev(OUT_B); Wait(55); Off(OUT_B); 
 OnFwd(OUT_B); Wait(55); Off(OUT_B); //指揮の動作指定
 task  play_music()
 {        
                 PlayTone(Do,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(So,50); Wait(55);
                 PlayTone(La,50); Wait(55);
                 PlayTone(So,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi, 50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
 }
 }                    //カエルのうたを指定
 task main()
 {
              ClearMessage();
              repeat(16){
              shiki;
              } 
              }            //shikiの動作を16回繰り返す
              until(Message() !=1);
              
              if( Message() == 1 ) play_music;
              if( Message() == 1 ) play_music; //メッセージ1を受け取ったらミュージックスタート
 }

**感想 [#t0cd65a7]
 未だ制作途中。輪唱し始めてほしいときにちゃんと通信できるかが鍵。
 これから調整していきたい。
 ちなみに指揮は2拍子。
  と思ってたけど、ロボットの形が車輪では無かったので、これは使えなかった…。
未だ制作途中。輪唱し始めてほしいときにちゃんと通信できるかが鍵。
これから調整していきたい。
ちなみに指揮は2拍子。
ロボットの形は変わったものの、このプログラムを改良して第2弾に使用。
*カエルのうた『第2弾』〜カエル人間(?)の指揮〜 [#d67697b4]
**制作者 [#m4ac5c36]
 C1一同
**写真 [#f4a5d1aa]
&ref(2005/C1/音楽を演奏・指揮するロボット/画像 039.jpg,30%,カエル人間(?)とカメ);
**プログラム [#i3d81091]
 #define Do    523
 #define Re    587
 #define Mi     659
 #define Fa     698
 #define So     784
 #define La     881
 #define shiki OnFwd(OUT_B); Wait(15); Off(OUT_B); OnRev(OUT_B); Wait(15); Off(OUT_B);
 #define La     881      //音階指定
 #define shiki OnFwd(OUT_B); Wait(15); Off(OUT_B); OnRev(OUT_B); Wait(15); Off(OUT_B); //指揮の動き
 task  play_music()
 {      
                 PlayTone(Do,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(So,50); Wait(55);
                 PlayTone(La,50); Wait(55);
                 PlayTone(So,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);
                 PlayTone(Do,50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Mi,50); Wait(55);
                 PlayTone(Fa,50); Wait(55);
                 PlayTone(Mi, 50); Wait(55);
                 PlayTone(Re,50); Wait(55);
                 PlayTone(Do,50); Wait(55);
                 Wait(55);       
 }
 }                   //カエルのうた指定
 task te()
 {repeat(50){ shiki;}}
 {repeat(50){ shiki;}}   //指揮の動作を50回繰り返す
 task main()
 {
             start te;
             start te;   //指揮スタート
             while(true)
             {
                ClearMessage();
                until(Message() !=0);
                 if( Message() == 1 ) start play_music;
              }
              }   //メッセージ1を受信したらミュージックスタート
 }
**感想 [#z4a72dcb]
指揮の動作50回の繰り返しはさすがに多く、演奏が終わっても指揮してました。改良できずじまい・・・。でも、輪唱はうまくいった。お聞かせしたかったです・・・。
*カエルのうた『第2弾』〜カメのダンス〜 [#sc970835]
**制作者 [#n01b72d5]
 C1一同
**写真 [#o1072ee9]
&ref(2005/C1/音楽を演奏・指揮するロボット/画像 038.jpg,30%,カメ);

**プログラム [#d72fa9ba]
 #define Do 523
 #define Re 587
 #define Mi 659
 #define Fa 698
 #define So 784
 #define La 881
 void head_turn_right(int t) {OnFwd?(OUT_C); Wait(t);}
 void head_turn_left (int t){OnRev?(OUT_C); Wait(t);}
 #define La 881           //音階指定
 void head_turn_right(int t) {OnFwd(OUT_C); Wait(t);} //頭右回転
 void head_turn_left (int t){OnRev(OUT_C); Wait(t);} //頭左回転
 task play_music()
 {
              PlayTone(Do,50); Wait(55);
              PlayTone(Re,50); Wait(55);
              PlayTone(Mi,50); Wait(55);
              PlayTone(Fa,50); Wait(55);
              PlayTone(Mi,50); Wait(55);
              PlayTone(Re,50); Wait(55);
              PlayTone(Do,50); Wait(55);
              Wait(55);
              PlayTone(Mi,50); Wait(55);
              PlayTone(Fa,50); Wait(55);
              PlayTone(So,50); Wait(55);
              PlayTone(La,50); Wait(55);
              PlayTone(So,50); Wait(55);
              PlayTone(Fa,50); Wait(55);
              PlayTone(Mi,50); Wait(55);
              Wait(55);
              PlayTone(Do,50); Wait(55);
              Wait(55);
              PlayTone(Do,50); Wait(55);
              Wait(55);
              PlayTone(Do,50); Wait(55);
              Wait(55);
              PlayTone(Do,50); Wait(55);
              Wait(55);
              PlayTone(Do,50); Wait(55);
              PlayTone(Re,50); Wait(55);
              PlayTone(Mi,50); Wait(55);
              PlayTone(Fa,50); Wait(55);
              PlayTone(Mi,50); Wait(55);
              PlayTone(Re,50); Wait(55);
              PlayTone(Do,50); Wait(55);
              Wait(55);
    }
    }                //カエルのうた指定
 task message_send()
 {
             Wait(425);   
         SendMessage(1);  Wait(500);
  }
  }                 //2小節終わったらメッセージ1送信
 task shippo()
 {
       repeat(29){
          OnFwd(OUT_A); Wait(15); Off(OUT_A);
         OnRev(OUT_A); Wait(15); Off(OUT_A);
          OnRev(OUT_A); Wait(15); Off(OUT_A);
          OnFwd(OUT_A); Wait(15); Off(OUT_A);
                            }
 }
 }               //シッポを振るダンス
 task head()
 {
            head_turn_right(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);           
            head_turn_left(425); Off(OUT_C);                           
            head_turn_left(425); Off(OUT_C);
            head_turn_right(425); Off(OUT_C);           
            head_turn_left(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);
            head_turn_right(55); Off(OUT_C);
            head_turn_left(55); Off(OUT_C);  
 }
 }                                 //頭回転のダンス
 task main()
 { 
            start play_music;
            start message_send;
            start shippo;
            start head;     
            start play_music;   //ミュージックスタート
            start message_send;  //メッセージ送信
            start shippo;     //シッポダンススタート
            start head;         //頭ダンススタート
 }
**感想 [#p30236a6]
頭、シッポともに、とても激しいダンスでした。
最初はプログラムの不備でメッセージの送信が出来ず、投げ出してしまおうかと思いましたが、何とかやり遂げました!
送信できるようになると、上にも書いたとおり、ちゃんと輪唱してくれました。

-期待しています -- [[かとりーぬ(TA)]] &new{2006-02-07 (火) 13:02:43};

#comment



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