目次
#contents
*課題の説明 [#m710e389]
今回の課題は、書道ロボットを作成し、各自の名前の一文字を選択し、A4用紙に書道ロボットに書かせるというものである。ただし、選択する文字は7画以上でなければならない。なお、今回私は「村」という一文字を選んだ。
* ロボットの説明  [#mfdabb24]
**全体 [#m42cd21d]
#ref(new_IMG_0268.jpg)
最初は後輪が高いため、重心が高くなっており、ひっくり返ってしまった。そこで後輪を組み換え重心を低くした。
**タイヤ部分 [#e01b93bb]
#ref(new_IMG_0259.jpg)
後輪はRISの冊子を参考に作った。前輪は歯数の小さいギアをモーター側に、大きいギアをタイヤ側につけることで速度を落とし、A4紙に収まる大きさの字を書きやすくした。モーターは前輪にのみ付いている。
**ペンの上げ下げ [#ycfc016c]
#ref(new_IMG_0254.jpg)
#ref(new_IMG_0255.jpg)
タイヤを2つ使い、その間にペンをはさみ、タイヤをギアで回転させることで、ペンの上げ下げを行う。最初、ギアをそのままつけたが、強すぎ、ペン先がはじかれてしまった。そこで輪ゴムを使い、一定のテンションがかかり続けるようにすることで、はじかれないように調整した。
*プログラムの説明 [#z4fe8132]
**プログラム [#p80eadb7]
 #define Down OnRev(OUT_B);Wait(120);Off(OUT_B);Wait(100); //ペンを下げる
 #define Up OnFwd(OUT_B);Wait(100);Off(OUT_B);Wait(100); //ペンを上げる
 #define SenFwd(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);Wait(100); //前に進む
 #define spin90 OnFwd(OUT_C);OnRev(OUT_A);Wait(60); //90度回転させる
 #define SenRev(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);Wait(100); //後ろに進む
 task main ()
 {
   Down;             //一画目開始
     Down;             //一画目開始

   int time1;  
   time1 = 0;
     int time1;  
     time1 = 0;
  
   time1 += 25;
   SenFwd(time1);
     time1 += 25;
     SenFwd(time1);

   Up;            //一画目終了
     Up;            //一画目終了
  
   time1 /= 2;
   SenFwd(time1);    //五画目の始めの位置に移動
     time1 /= 2;
     SenFwd(time1);    //五画目の始めの位置に移動

   Down;          //五画目開始  
     Down;          //五画目開始  

   time1 *= 2;
   SenFwd(time1);
     time1 *= 2;
     SenFwd(time1);
  
   Up;         //五画目終了
     Up;         //五画目終了

   time1 *= 2;
   SenRev(time1);  //一画目の中央に移動
     time1 *= 2;
     SenRev(time1);  //一画目の中央に移動

   spin90;      //90度回転
     spin90;      //90度回転

   time1 /= 4;
   SenRev(time1);  //二画目の始めの位置に移動
     time1 /= 4;
     SenRev(time1);  //二画目の始めの位置に移動

   Down;       //二画目開始
     Down;       //二画目開始

   time1 *= 8;
   SenFwd(time1);
     time1 *= 8;
     SenFwd(time1);

   Up;        //二画目終了
     Up;        //二画目終了

   time1 *= 3;
   time1 /= 4;
   SenRev(time1); //三画目の始めの位置に移動
     time1 *= 3;
     time1 /= 4;
     SenRev(time1); //三画目の始めの位置に移動
  
   OnFwd(OUT_C);
   OnRev(OUT_A);
   Wait(10);
   Off(OUT_AC);
   Wait(100);   //三画目を書く方向を向かせる
     OnFwd(OUT_C);
     OnRev(OUT_A);
     Wait(10);
     Off(OUT_AC);
     Wait(100);   //三画目を書く方向を向かせる

   Down;      //三画目開始
     Down;      //三画目開始
  
   time1 *= 2;
   time1 /= 3;
   SenFwd(time1);
     time1 *= 2;
     time1 /= 3;
     SenFwd(time1);
  
   Up;       //三画目終了
     Up;       //三画目終了

   SenRev(time1);//四画目の始めの位置に移動
     SenRev(time1);//四画目の始めの位置に移動

   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(25);
   Off(OUT_AC);
   Wait(100);  //四画目を書く方向を向かせる
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(25);
     Off(OUT_AC);
     Wait(100);  //四画目を書く方向を向かせる

   Down;     //四画目開始
     Down;     //四画目開始

   time1 /= 2;
   SenFwd(time1);
     time1 /= 2;
     SenFwd(time1);

   Up;      //四画目終了
     Up;      //四画目終了

   time1 *= 3;
   time1 /= 2;
   SenFwd(time1);//六画目の始めの位置に移動(六画目は反対側から書く)
     time1 *= 3;
     time1 /= 2;
     SenFwd(time1);//六画目の始めの位置に移動(六画目は反対側から書く)
  
   Down;    //六画目のはねの部分開始
     Down;    //六画目のはねの部分開始

   time1 *= 2;
   time1 /= 3;
   SenFwd(time1);//六画目のはねの部分終わり
     time1 *= 2;
     time1 /= 3;
     SenFwd(time1);//六画目のはねの部分終わり

   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(100);
   Off(OUT_AC);
   Wait(100); //六画目の直線を書く方向を向かせ、六画目の直線部分開始
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(100);
     Off(OUT_AC);
     Wait(100); //六画目の直線を書く方向を向かせ、六画目の直線部分開始

   time1 *= 4;
   SenFwd(time1);
     time1 *= 4;
     SenFwd(time1);

   Up;     //六画目終了
     Up;     //六画目終了

   OnFwd(OUT_A);
   OnRev(OUT_C);
   Wait(10);
   Off(OUT_AC);
   Wait(100);  //七画目の始めの位置の方向を向かせる
     OnFwd(OUT_A);
     OnRev(OUT_C);
     Wait(10);
     Off(OUT_AC);
     Wait(100);  //七画目の始めの位置の方向を向かせる

   time1 /= 2;
   SenFwd(time1);//七画目の始めの位置に移動
     time1 /= 2;
     SenFwd(time1);//七画目の始めの位置に移動

   spin90;   //七画目を書く方向を向かせる
     spin90;   //七画目を書く方向を向かせる

   Down;    //七画目開始
     Down;    //七画目開始

   time1 /= 8;
   SenFwd(time1);//七画目終了
     time1 /= 8;
     SenFwd(time1);//七画目終了
 }

**説明 [#dba01cfe]
#ref(new_ロボ書き順.jpg)
上の図の書き順で書いた。同じ方向の線を合わせて書くことで、向きを変える手間をできるだけ省いた。
プログラムにおける回転の秒数は、モーターの出力に差があったため、何回か実際に動かしてみることで秒数を決定した。
**書けたもの [#s2ecbaa9]
#ref(new_IMG_0262.jpg)
少し斜めになってしまったが、何とか「村」と読める。
*感想と反省 [#aec3a5c4]
~・ロボットの動きの微調整が難しかった。特に、回転の秒数を決めるとき、モーターの出力に差があったため、何回も動かして秒数を決めていった。
~・全員の予定がなかなか合わず、あまり時間を取れなかった。今度ロボットを組む時は連携をさらに密にし、完璧なものを作り上げたい。
~・難しかった点や、困った点などいろいろとあったが、最終的にはなんとか形にでき、また楽しむこともできたのでよかったと思う。今回の経験は次回の課題に生かしていきたい。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS