[[2005/A3]]

*序章  文字「左」を書く            program editer     Hideshi                      [#i983f7f2]
*&size(30){序章  文字「左」を書く };           program & page editer    Hideshi [#i983f7f2]

**機体説明 [#o1dbe123]
- [[機体概略>2005/A3/機体(1L)]]
-モータA は機体の右タイヤ、C は左タイヤ、そしてB はペンを固定してあるフレームを動かすように設置
- ペンは機体から5センチほど前に離して固定
-ペンは2つのタイヤにより固定し、また、ペンブレを防ぐようにできるだけ地面に近づけた所で固定
-機体下部は説明書に書いてあったものをそのまま使用(p12~p17)
***メリット    ・曲線は機体の旋回だけで引くことができる [#o957c973]
***デメリット   ・直線を引く時に、わざわざ一度下がる必要がある所がでてきた(3、4、5画目)                           ・重心が前部に偏っている [#zbeb8438]
-デメリットの方が多いが、曲線を上手に早く書くことができるメリットが大きいのでこの機体を採用した
-重心は、機体のタイヤの設置において、前部を大きいものに、後部を小さいものにすることで、多少は改善された。もう1つのデメリットはプログラミングにより解消した
**基本プログラム [#wd9eee33]
[#m527a634]
 sub Pen_Down()   {OnFwd(OUT_B);Float(OUT_B);Wait(50);}
 sub Pen_Up()    {OnRev(OUT_B);}
 void Right_Turn(int t){OnFwd(OUT_A);OnRev(OUT_C);Wait(t);}
 void Left_Turn(int t){OnFwd(OUT_C);OnRev(OUT_A);Wait(t);}
 void Back(int t) {OnRev(OUT_A+OUT_C);Wait(t);}
 void Go(int t){OnFwd(OUT_A+OUT_C);Wait(t);}
 sub Stop() {Off(OUT_A+OUT_C);Wait(50);}
 sub Pen_Down()   {OnFwd(OUT_B);Float(OUT_B);Wait(50);}            
      //Float によりペンが地面へとゆっくり着地するようにした。また、Wait はペンが地面に着地するまで機体が動き出さないようにするためのもの
 sub Pen_Up()    {OnRev(OUT_B);}                                                 
      //モータを止めてしまうとペンの重みで勝手に下がってきてしまうので、あえてモータは止めないでおいた
 void Right_Turn(int t){OnFwd(OUT_A);OnRev(OUT_C);Wait(t);}    
      //場所によって機体の向きを変える時間が異なるので、void を使い、微調整できるようにした
 void Left_Turn(int t){OnFwd(OUT_C);OnRev(OUT_A);Wait(t);}       
      //同上
 void Back(int t) {OnRev(OUT_A+OUT_C);Wait(t);}                         
      //文字の中で、それぞれの線分の長さの違いを示すために場所により微調整を行なえるようにした
 void Go(int t){OnFwd(OUT_A+OUT_C);Wait(t);}                            
      //同上
 sub Stop() {Off(OUT_A+OUT_C);Wait(50);}    
      //特に意味はないが、文字を書き終えた機体を止める際に使う(ただのおまけ)                              
***工夫点 [#bacf425b]
 ・左右を反対方向に 0.85 秒回せば、機体が 90 度回る事は多くの班で気づいている事だと思うけど、あえて sub で指示をせず、 void にして time 値を状況ごとに変えれるようにして微調整をおこないました。
 ・左右を反対方向に 0.85 秒回せば、機体が 90 度回る事は多くの班で気づいている事だと思うけど、あえて sub で指示をせず、 void にして time 値を状況ごとに変えれるようにして微調整を行なった。
**実際に動かす [#l3257f9a]
  task main()
 {Pen_Down();Wait(20);                          // The first straight
 Go(120);Pen_Up();Stop();   
 Back(85);Left_Turn(20);                 //Shift to the second curve
 Stop();Pen_Down();Wait(50);Right_Turn(70);          //The second curve
 Pen_Up();Go(50);Left_Turn(50);Back(45);Stop();   //Shift to the third straight
 Pen_Down();Go(60);Stop();Pen_Up();                             //The third straight
 Go(80);Left_Turn(85);Back(124);Stop();         //Shift to the fourth straight
 Pen_Down();Back(50);Stop();                                        //The fourth straight
 Pen_Up();Go(100);Left_Turn(85);Back(75);Stop();     //Shift to the fifth straight
 Pen_Down();Back(80);Stop();                               //The fifth straight
 Pen_Up();Right_Turn(85);Back(50);Off(OUT_A+OUT_B+OUT_C);}
 {Pen_Down();Wait(20);Go(120);Pen_Up();Stop();     
                //一画目→普通に機体を前進させて書く
 Back(85);Left_Turn(20);Stop();                            
                //二画目への移動(*)
 Pen_Down();Wait(50);Right_Turn(70);Pen_Up();   
                //二画目→メリットを活かし、機体の旋回だけで引く
 Go(50);Left_Turn(50);Back(45);Stop();                
                //三画目への移動(*)
 Pen_Down();Go(60);Stop();Pen_Up();                             
                //三画目→一画目と同様
 Go(80);Left_Turn(85);Back(124);Stop();         
                //四画目への移動
 Pen_Down();Back(50);Stop();                                        
                //四画目→一画目と同様。しかし、今回は後退によって引く
 Pen_Up();Go(100);Left_Turn(85);Back(75);Stop();     
                //五画目への移動
 Pen_Down();Back(80);Stop();                               
                //五画目→四画目と同様。しかし、三画目とは長さが違う
 Pen_Up();Right_Turn(85);Back(50);Off(OUT_A+OUT_B+OUT_C);}     
                //文字を書き終えた機体を、邪魔にならない所(文字の左下)へ移動
-(*)デメリットの1つをこの部分で解消(微調整がもっとも大変だった所)
**感想 [#c9f4ce01]
 ・機体はグループで話し合って作りましたが、プログラムは自分でしか作れないので大変でした。特に微調整に多くの時間をかけたけど、上手く書けたので良かったです。
*コメントをお願いします [#udd54ac0]
-他の人が見ても理解しやすい様な工夫をするともっと良いと思う。プログラム自体は良いと思う。 -- [[ストップ]] &new{2005-11-18 (金) 15:27:00};

#comment


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