音楽に合わせて踊るロボット                         program edeter All members(Hideshi&shungen&shunsuke&tatsuhiko)

機体概略

  • パワーポイントのファイルです。お手数ですが、ダウンロードした後にファイルを開き、スライドショー → リハーサル へとお進みください。

メリット  各部位のパーツ全てを一人一人が別々につくったので、全員が機体作りとプログラム作成を行なえた 

デメリット それぞれが別々に作ったので、パーツ同士の協調性がない

スタートボタンを押すRCX側のプログラム(メッセージを送信する側)

#define Do  523
#define Re  587
#define Mi  659
#define Fa  698
#define Sol 784
#define Ra  880
#define Shi 988
task play_music()                                  //音楽「カエルの歌」
 {
 while (true)
 {
    PlayTone(Do,30); Wait(35); SendMessage(1); 
    PlayTone(Re,30); Wait(35); SendMessage(2);
    PlayTone(Mi,30); Wait(35); 
    PlayTone(Fa,30); Wait(35); 
    PlayTone(Mi,30); Wait(35);
    PlayTone(Re,30); Wait(35); SendMessage(2);
    PlayTone(Do,40); Wait(50); 
    PlayTone(Mi,30); Wait(35); 
    PlayTone(Fa,30); Wait(35); 
    PlayTone(Sol,30); Wait(35); 
    PlayTone(Ra,30); Wait(35); SendMessage(1);
    PlayTone(Sol,30); Wait(35); SendMessage(2);
    PlayTone(Fa,30); Wait(35); 
    PlayTone(Mi,45); Wait(55);
    PlayTone(Do,45); Wait(50); 
    PlayTone(Do,45); Wait(50);
    PlayTone(Do,45); Wait(50); SendMessage(1); 
    PlayTone(Do,45); Wait(50); 
    PlayTone(Do,25); Wait(30); 
    PlayTone(Do,25); Wait(30); 
    PlayTone(Re,25); Wait(30); 
    PlayTone(Re,25); Wait(30); 
    PlayTone(Mi,25); Wait(30); SendMessage(1);
    PlayTone(Mi,25); Wait(30); SendMessage(2);
    PlayTone(Fa,25); Wait(30);
    PlayTone(Fa,25); Wait(30); 
    PlayTone(Mi,45); Wait(50); 
    PlayTone(Re,45); Wait(50); 
    PlayTone(Do,55); Wait(60); 
    }
 } 
 task H_A()                              //青山英示が作成(マウス君)
{while(true)
{ClearMessage();
until( Message()!=0 );

if( Message()==1 )                  //メッセージ1を受け取ると、
{OnFwd(OUT_B);Wait(5);OnRev(OUT_A);Wait(5);Off(OUT_B);};};       //口をぱくぱくする
 
}
task S_K()                                 //雇俊産が作成(本体)
{while(true)
{ClearMessage();
until( Message()!=0 );

if( Message()==2 )                     //メッセージ2を受け取ると、
{OnFwd(OUT_A+OUT_C);Wait(30);OnRev(OUT_A+OUT_C);Wait(30); };};     //前進したあとに後退をする
}

task main()

{
    start play_music ;
    start H_A;
    start S_K;   
 } 

もう一方のRCXのプログラム (メッセージを受信する側)

  • プログラム作成において全てのパーツは、メッセージの1と2を受信した場合しか動かないようにした。そのため受信側に備え付けたパーツは、受信後に受け取ったメッセージを送り返す必要があった。(西澤君の作成したプログラムに記述)
task S_T()                                   //戸塚俊介が作成(プロペラ君)
{while(true){
ClearMessage();
until( Message()!=0 );
if( Message()==1 )                      //メッセージ1を受け取った場合、時計回りを1秒続ける
{  OnFwd(OUT_A);Wait(100); };
if( Message()==2 )                     //メッセージ2を受け取った場合、反時計回りを1秒続ける
{ OnRev(OUT_B);Wait(100);};
};
}
task T_N()                            //西澤龍彦が作成(ドラム君)
{while(true){
ClearMessage();
until( Message()!=0 );

if( Message()==1 )                       //メッセージ1を受け取ると、
{SendMessage(1);                         //メッセージ1を送信した後で、
OnFwd(OUT_A);Wait(35);              
repeat(3)
{OnRev(OUT_A);Wait(15);OnFwd(OUT_A);Wait(15);};     //右手側が腕を三回振った後
Wait(110);};                                            //ドラムを三回叩く

if( Message()==2)              
{ SendMessage(2);                            //メッセージ2を受け取ると、
OnFwd(OUT_B);Wait(45);              
repeat(2)
{OnRev(OUT_A);Wait(5);OnFwd(OUT_B);Wait(5);};       //左手側が腕を2回振った後
Wait(120);};                                            //ドラムを2回叩く
};}
task main()
{start T_N;
 start S_T;}

*コメントをお願いします



添付ファイル: filedoramu.3gp 323件 [詳細] filekuchi.3gp 308件 [詳細] filepuropera.3gp 304件 [詳細] file1.ppt 631件 [詳細]

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