#contents
*音楽に合わせて踊るロボット                           program edeter   All members(Hideshi&shungen&shunsuke&tatsuhiko) [#yf008ffd]
**機体概略 [#b8e5c34a]
-[[機体概要>2005/A3/課題5/機体]]
***メリット    [#t9d625f2]
***デメリット  [#aa0c0c28]
**スタートボタンを押すRCX側のプログラム [#eaf5a2bd]
**もう一方のRCXのプログラム [#eeb16dc1]
#ref(1.ppt)
-パワーポイントのファイルです。お手数ですが、ダウンロードした後にファイルを開き、スライドショー → リハーサル へとお進みください。
***メリット  各部位のパーツ全てを一人一人が別々につくったので、全員が機体作りとプログラム作成を行なえた  [#t9d625f2]
***デメリット それぞれが別々に作ったので、パーツ同士の協調性がない [#aa0c0c28]
**スタートボタンを押すRCX側のプログラム(メッセージを送信する側) [#eaf5a2bd]
 #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);};};       //口をぱくぱくする
  
 }
#ref(kuchi.3gp)
 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のプログラム (メッセージを受信する側)[#eeb16dc1]
-プログラム作成において全てのパーツは、メッセージの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);};
 };
 }
#ref(puropera.3gp)
 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回叩く
 };}
#ref(doramu.3gp)
 task main()
 {start T_N;
  start S_T;}
****コメントをお願いします [#d2fb9f1b]
#comment


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