[[2005/B1]]

*練習問題1 [#hed12ed1]
-書道ロボット

 #define MOVE_TIME 2
 #define MATE
 #define taiya OUT_A+OUT_C
 #define a OUT_A
 #define c OUT_C
 #define b OUT_B
 
 task main()
 {OnFwd(OUT_B);
 Wait(150);                     //ペン上げ
 OnFwd(OUT_A);
 OnFwd(OUT_C);
 
 repeat(50){
 Wait(MOVE_TIME);
 Off(OUT_A);
 Wait(MATE);
 OnFwd(OUT_A);}              //1画目終わり
 
 Off(OUT_A+OUT_B+OUT_C);
 
 OnRev(OUT_B);
 Wait(100);                
 Off(OUT_B);                    //ペン上げ
 
 OnFwd(OUT_A);
 Wait(MOVE_TIME*50-MATE*50);
 
 Off(OUT_A+OUT_C);
 
 OnFwd(taiya);
 Wait(20);
 Off(taiya);
 OnRev(OUT_C);
 Wait(240);
 Off(OUT_C);  
 OnFwd(OUT_A+OUT_C);
 Off(taiya);                            
 
 OnRev(taiya);
 Wait(30);
 Off(taiya);                     //2画目の位置  
 
 OnFwd(OUT_B);
 Wait(150);
 
 OnFwd(OUT_A+OUT_B+OUT_C);
 Wait(130);
 Off(taiya);                     //2画目終わり
 OnRev(OUT_B);
 Wait(100);
 Off(OUT_B);
 
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(250);                     
 
 OnFwd(taiya);
 Wait(10);
 Off(taiya);
 
 OnFwd(OUT_A);
 OnRev(OUT_C);
 Wait(127);
 Off(OUT_C);
 
 OnRev(taiya);
 Wait(40);
 Off(taiya);
 
 OnFwd(OUT_B);                //3画目の位置
 Wait(150);
 
 OnFwd(taiya);
 Wait(60);
 Off(taiya);
 OnRev(OUT_B);
 Wait(100);
 Off(OUT_B);                //3画目終わり
 
 OnFwd(taiya);
 Wait(25);
 OnFwd(OUT_A);
 OnRev(OUT_C);
 Wait(125);
 OnRev(taiya);
 Wait(87);
 Off(taiya);              //4画目の位置
 
 OnFwd(OUT_B);
 Wait(150);
 OnFwd(taiya);
 Wait(80);
                            //4画目の角
 repeat(15){
 
 OnFwd(c);
 OnRev(a);
 Wait(1);
 Off(c);
 OnRev(a);
 Wait(1);
 Off(a+c);
 OnFwd(a+c);
 Wait(1); 
 Off(OUT_A+OUT_C);
 }
 repeat(10){
 OnFwd(c);
 OnRev(a);
 Wait(1);
 Off(a);
 OnFwd(c);
 Wait(1);
 Off(a+c);
 }
 OnRev(OUT_B);
 Wait(100);                    //4画目の終わり
 Off(OUT_B);
 
 repeat(10){
 OnRev(c);
 OnFwd(a);
 Wait(1);
 Off(a);
 OnRev(c);
 Wait(1);
 Off(a+c);
 }
 
 repeat(15){
 
 OnRev(c);
 OnFwd(a);
 Wait(1);
 Off(c);
 OnFwd(a);
 Wait(1);
 Off(a+c);
 OnRev(a+c);
 Wait(1); 
 Off(OUT_A+OUT_C);
 }
 
 OnRev(taiya);
 Wait(80);
 Off(taiya);
 OnRev(a);
 Wait(243);
 OnFwd(taiya);
 Wait(59);
 Off(taiya);
 OnFwd(a);
 Wait(243);                    //5画目の位置
 Off(taiya);
 OnFwd(taiya);
 Wait(10);
 Off(taiya);
 
 OnFwd(b);
 Wait(150);
 OnFwd(taiya);
 Wait(83);
 Off(a+b+c);
 OnRev(b);
 Wait(100);
 Off(b);}

-長くてすみません。ロボットの構造がタイヤの中心よりもペンが前に出ていたのでいろいろ微調整が大変でした。
-自分ながら「4画目の角」からの直線をアレンジしてみました。結果は、うねうねの直線(?)になってしまいました。
-ロボットの工夫は、キャタピラだとキャタピラのでこぼこの位置によって微少にずれが生じてしまうと思ったのでタイヤにしました。また、4輪にすると回転しにくいとおもったので3輪車にしました。
-関数やサブルーチンを使ってもう少しプログラムを整理してみよう。 -- [[まいける(TA)]] &new{2005-12-02 (金) 17:00:30};

#comment

*練習問題5 [#jc0789da]
-曲ロボット

 #define Do  523
 #define Re  587
 #define Mi  659
 #define Fa  698
 #define Fa1 740
 #define Sol 784
 #define Ra  880
 #define Si  988
 #define Doo 1047
 #define Ree 1175
 #define oto PlayTone
 #define mate Wait
 #define sibu 40
 #define juuroku 20
 #define nibu 80
 #define zen 160
 #define renzoku 7
 task play_music()
 {
 while (true)
 {
   PlayTone(Ra,juuroku);Wait(juuroku);                    //あ
   oto(Si,juuroku);Wait(juuroku);                         //い
   oto(Ra,juuroku);mate(juuroku);                         //し
   oto(Sol,juuroku);mate(juuroku+renzoku*2);              //あ
   oto(Sol,nibu+sibu-renzoku*2);mate(nibu+sibu-renzoku*2);//うー
   oto(Si,sibu);mate(sibu);                               //ふー
   oto(Ree,sibu+juuroku);mate(sibu+juuroku);              //たー
   oto(Fa1,juuroku);mate(juuroku+renzoku);                //ぁ
   oto(Fa1,nibu-renzoku);mate(nibu-renzoku);              //りー
   oto(Sol,nibu+juuroku);mate(nibu+juuroku+renzoku);      //いー
   oto(Sol,juuroku-renzoku);mate(juuroku-renzoku);        //つ
   oto(Fa1,juuroku);mate(juuroku);                        //の
   oto(Sol,juuroku);mate(juuroku);                        //と
   oto(Si,sibu+juuroku);mate(sibu+juuroku);               //きー
   oto(Re,juuroku);mate(juuroku+renzoku);                 //ぃ
   oto(Re,nibu-renzoku);mate(nibu-renzoku);               //もー
   oto(Mi,sibu);mate(sibu);                               //と
   oto(Sol,sibu);mate(sibu);                              //な
   oto(Fa1,juuroku);mate(juuroku);                        //り
   oto(Sol,juuroku);mate(juuroku);                        //ど
   oto(Ra,juuroku);mate(juuroku);                         //お
   oto(Re,juuroku);mate(juuroku);                         //し
   oto(Si,sibu);mate(sibu);                               //あ
   oto(Doo,sibu);mate(sibu);                              //な
   oto(Si,sibu);mate(sibu);                               //た
   oto(Ra,sibu);mate(sibu);                               //と
   oto(Mi,sibu);mate(sibu);                               //あー
   oto(Fa1,juuroku);mate(juuroku);                        //た
   oto(Sol,juuroku);mate(juuroku);                        //し
   oto(Fa1,juuroku);mate(juuroku);                        //さ
   oto(Sol,juuroku);mate(juuroku);                        //く
   oto(Ra,juuroku);mate(juuroku);                         //ら
   oto(Fa1,juuroku);mate(juuroku);                        //ん
   oto(Sol,zen);mate(zen);                                //ぼー
   mate(zen);
 }}
 task main()
 {start play_music;}


#comment


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