2005/C1/宇佐美

音楽を演奏するロボット(カエルのうた):制作途中

制作者

  C1一同

プログラム

int t;
#define Do    523
#define Re    587
#define Mi     659
#define Fa     698
#define So     784
#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);  //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;   //メッセージ送信
              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_left(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;       //左右に振れるダンス    
}

感想

未だ制作途中。踊りは簡単なものだが、曲にばっちり合う予定。 ロボコンが終わってから2体に分解して完成させたい。 と思って、2体作った。けど、カメには走行機能が付いていない・・・。ダンス、使用不可。でも、これはテスト最終日、つまり初MAC使用のプログラムなので、載せておきます。「カエルのうた」は先生にMACの使い方を教えて頂いて作り上げました。私事ですが、バイトなどで時間がなく、このプログラムを使用するに至るまで、課題5に時間をかけられなかったのが残念です・・・。

指揮をとり、輪唱するロボット(カエルのうた):制作途中

制作者

 C1一同

プログラム

#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); //指揮の動作指定
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; //メッセージ1を受け取ったらミュージックスタート
}

感想

未だ制作途中。輪唱し始めてほしいときにちゃんと通信できるかが鍵。 これから調整していきたい。 ちなみに指揮は2拍子。 ロボットの形は変わったものの、このプログラムを改良して第2弾に使用。

カエルのうた『第2弾』〜カエル人間(?)の指揮〜

制作者

C1一同

写真

カエル人間(?)とカメ

プログラム

#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); //指揮の動き
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;}}   //指揮の動作を50回繰り返す
task main()
{
            start te;   //指揮スタート
            while(true)
            {
               ClearMessage();
               until(Message() !=0);
                if( Message() == 1 ) start play_music;
             }   //メッセージ1を受信したらミュージックスタート
}

感想

指揮の動作50回の繰り返しはさすがに多く、演奏が終わっても指揮してました。改良できずじまい・・・。でも、輪唱はうまくいった。お聞かせしたかったです・・・。

カエルのうた『第2弾』〜カメのダンス〜

制作者

C1一同

写真

カメ

プログラム

#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);} //頭左回転
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_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;         //頭ダンススタート
}

感想

頭、シッポともに、とても激しいダンスでした。 最初はプログラムの不備でメッセージの送信が出来ず、投げ出してしまおうかと思いましたが、何とかやり遂げました! 送信できるようになると、上にも書いたとおり、ちゃんと輪唱してくれました。

  • 期待しています -- かとりーぬ(TA)? 2006-02-07 (火) 13:02:43


添付ファイル: file画像 039.jpg 159件 [詳細] file画像 038.jpg 145件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-09 (木) 03:21:20