*目次 [#p29d7ff8]
#contents
*ロボット本体の説明 [#k9798d32]
**全体像 [#ycd6a7fe]
私たちのグループではプログラムをより簡単にするために、x軸y軸でペンを動かすロボットを組み立てた。そのために3つしかないモーターをx軸用、y軸用、ペンの上下用に使用した。
~今回、私は「前期」の「期」を担当した。
#ref(./s_DSCmfkjf_0129.jpg,50,全体像)
#ref(./s_DSCmfkjf_0129.JPG,全体像)
**台車 [#o3709025]
写真を見ての通り、右前側のペンが取り付けられているところが重くなるため、バッテリーボックスを左後方に置きバランスをとるようにした。
**ペンの横移動 [#d28d9258]
レールはペンを左右に移動するためのものである。モーターにつながっている二つのタイヤと何もつながっていない2つのタイヤの4つのタイヤで構成されており、その上をアームが横移動する。その時にタイヤからずれたり落下しないように側面と上側にブロックを取り付けた。
#ref(./s_DSCfkldfkl0135.JPG,50,arm)
**ペンの上げ下げ [#i3fc097c]
まずペンの固定はゴムで止めた。また普通にギアを取り付けただけでは勢いよくペンが上下してぶっとんでしまうため、うまくギアを組み合わせて回転数を減らし上下運動をゆっくりさせた。
#ref(./DSC_018.JPG,50,arm)
#ref(./s_D32.JPG,50,arm)
*プログラムの説明 [#h51302c2]
基本のペンの上下のプログラムを以下のように定義した。
 #define PEN_TIME 100 //ペンを動かす時間
 #define PEN_UP OnFwd(OUT_C);Wait(PEN_TIME);Off(OUT_C); //ペンを上げる動作
 #define PEN_DOWN OnRev(OUT_C);Wait(PEN_TIME);Off(OUT_C);//ペンを下げる動作
**其 [#d5b3ace5]
 #define FORWARD(FWD_TIME) OnFwd(OUT_A);Wait(FWD_TIME);Off(OUT_A);//前に移動するプログラム
 #define BACK(back_time) OnRev(OUT_A);Wait(back_time);Off(OUT_A);//後ろに移動するプログラム
 #define MIGIUE_GO(migiue_time) OnRev(OUT_B);OnFwd(OUT_A);Wait(migiue_time);Off(OUT_AB);
 #define NANAME_R PEN_DOWN;OnRev(OUT_AB);Wait(5);Off(OUT_AB);PEN_UP;
 #define NANAME_L PEN_DOWN:OnFwd(OUT_A);OnRev(OUT_B);Wait(5);Off(OUT_AB);PEN_UP;
 sub HANOJI()//ハノ字を書くプログラム
 { NANAME_L;
   OnRev(OUT_B);
   Wait(5);
   Off(OUT_B);
   NANAME_R;
  }

 task main()
 {
 OnRev(OUT_B);
 Wait(20);
 Off(OUT_B);
 PEN_DOWN;
 BACK(15);
 PEN_UP;
 OnFwd(OUT_B);
 Wait(15);Off(OUT_B);
 PEN_DOWN;
 FORWARD(15);
 PEN_UP;
 OnFwd(OUT_B);OnRev(OUT_A);
 Wait(5);
 Off(OUT_AB);
 PEN_DOWN;
 OnRev(OUT_B);
 Wait(20);Off(OUT_B);
 PEN_UP;
 OnFwd(OUT_B);OnRev(OUT_A);
 Wait(5);
 Off(OUT_AB);
 PEN_DOWN;
 OnFwd(OUT_B);
 Wait(10);
 Off(OUT_B);
 PEN_UP;
 BACK(5);
 PEN_DOWN;
 OnRev(OUT_B);
 Wait(10);
 Off(OUT_B);
 PEN_UP;
 OnRev(OUT_AB);
 Wait(5);
 Off(OUT_AB);
 PEN_DOWN;
 OnFwd(OUT_B);
 Wait(20);Off(OUT_B);
 PEN_UP;
 BACK(10);
 HANOJI();//其のハの字を書くプログラム
 MIGIUE_GO(20);//月の始点に移動するプログラム
 }

~書きはじめを右の縦棒からにしたので、のちに左側へ移動することを踏まえ可動域を超えないように調整するために、最初に左側へ移動する距離分をペンを右側へ移動させた。
~4本の横線は一筆書きのようにプログラムを組んだ。理由はそうしたほうがハノ字を書くときにプログラムを組みやすくなるからである。1つ目の横線から2つ目の横線、3つ目の横線から4つ目の横線へ移動するときはx軸とy軸の動きを連動させ斜め移動にした。
**月 [#l199736a] 
 
 void TSUKI (int t)
 {
  PEN_DOWN;
  BACK(3*t);
  PEN_UP; //月の1画目
  OnRev(OUT_B);
  Wait(t);
  Off(OUT_B); //1画目の終点から2画目の始点
  PEN_DOWN;
  FORWARD(3*t);
  PEN_UP; //2画目(下から上)
  repeat(3) //3本の横線を書くプログラム
  {
    PEN_DOWN;
    OnFwd(OUT_B);
    Wait(t+1);Off(OUT_B);
    PEN_UP; //横線を引くプログラム
    OnRev(OUT_AB);
    Wait(t);
    Off(OUT_A);
    Wait(1);
    Off(OUT_B); //次の横線の始点に移動するプログラム
   }

 task main()
 {
   TSUKI(7)
 }
月については「前」の月で作ったプログラムを使用した。ただ「前」よりも月の字が小さくなってしまったためtの値を変更した。誤差を修正するための+1を加えた。(其が小さくなってしまいサイズを合わせるため。)

*反省点と感想 [#e52ae42f]
字がとてもふにゃっとしており(特に縦線)、出来があまりよくなかった。もうすこし篇を持つ部分を補強できればよくなったのではないかと思う。また其の部分をもうすこしプログラミングをきれいにできたらよかった。今回を踏まえて、次回はもっとよいものを作りたい。


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