[[2016a/Member]]

*お絵かきロボット [#p93921c5]
**目次 [#n7efb79f]
#contents
**ロボット紹介 [#pf901b8a]
***ロボットの構造 [#p1783882]
ロボットの構造は本体に腕をつけるような形にし、その部分にペンを挟みました。
#br縦の線はアームを前方として前後に動かせて描きます。
#br曲線は本体の旋回を利用して、アームをコンパスの様に描きます。
#ref(全体.png)
**ロボット製作[#h75b399d]
***本体 [#ea49f54b]
本体は付属の組立書を参考にしてシンプルに作りました。
***アーム [#pb703be5]
アームはモーターを前回転させるとペンが下に降り、後ろ回転させるとペンが上に上がります。これがペンで書かせる仕組みです。
#ref(仕組み.jpg)

***構造で修正したこと [#k04ade29]
・アームが長すぎて引きずるように動いてしまったので、なるべくコンパクトにして改善をした。
・鉛筆をしっかり固定させるために棒状のパーツを挟めて固定させた。
#ref(ペン先.jpg)

**顔のプログラム [#n36d507a]
***定義について [#w85be401]
 #define turn_left(t,s) Off(OUT_C); OnFwd(OUT_B,s); Wait(t); Off(OUT_C);    //左に旋回
 #define turn_right(t,s) Off(OUT_B); OnFwd(OUT_C,s); Wait(t); Off(OUT_B);   //右に旋回
 #define go_forward(t,s) OnFwd(OUT_BC,s); Wait(t); Off(OUT_BC);             //前進
 #define go_back(t,s) OnRev(OUT_BC,s);Wait(t);Off(OUT_BC);         //後退 
 #define kaku Off(OUT_BC); OnRev(OUT_A,25); Wait(400); Off(OUT_A);          //書き始める
 #define hanasu Off(OUT_A); OnFwd(OUT_A,25); Wait(300); Off(OUT_A);     //書き終わり

***動作について [#h691cf4a]
  task main ()
  {
  kaku;                    //右もみあげからスタート
  go_forward(500,50);      //0.5秒間を50のスピードで直線を描く
  hanasu;

  go_forward(200,50);   //輪郭左半分を描くために調整
  turn_left(350,50);    //Bモーター50のスピードで0.35秒間旋回
  kaku;          
  turn_left(360,50);     //旋回を利用して輪郭左を描く
  hanasu;         

  turn_left(100,30);       //左もみあげを描くために準備
  go_forward(300,40);
  turn_right(1100,50);   //Cモーター50のスピードで1.1秒間旋回
  go_back(1300,50);  
  kaku;
  go_forward(510,50);   //0.51秒間を50のスピードで左もみあげを描く
  hanasu;

  turn_right(300,50);   //輪郭右半分を描くための準備
  kaku;
  turn_right(400,50);   //旋回を利用して輪郭右を描く
  hanasu;

  turn_right(400,50);   //前髪を描くための準備
  go_forward(680,50);
  turn_right(900,50);   //Cモーター50のスピードで0.9秒間旋回
  go_back(850,50);     //ロボットが前に出すぎるため後退
  turn_right(1220,50);   //約90度右に旋回
  go_back(440,50);     //ここでもロボットが前に出すぎるため後退
  kaku;
  turn_right(240,50);   //ロボットを左右に振らせて、前髪のギザギザを右側から描く
  turn_left(100,50);
  hanasu;
  go_back(550,50);
  kaku;          //同様に描く
  turn_right(290,50);
  turn_left(100,50);
  hanasu;
  go_back(500,50);
  kaku;          //どんどん描く
  turn_right(310,50);
  turn_left(140,50);
  hanasu;
  go_back(460,50);
  kaku;          //これで最後
  turn_right(350,50);
  turn_left(100,50);
  hanasu;

  turn_right(700,50);   //目を描く準備
  go_back(700,50);    //右目から描く為に目尻に向かって後退
  kaku;
  go_forward(210,50);   //目が細いので目は横棒
  hanasu;      
  go_forward(280,50);   //右目頭から左目頭へ移動
  kaku;
  go_forward(210,50);   //左目
  hanasu;

  go_forward(300,50);   //口を描く準備
  turn_right(850,50);
  go_back(900,50);    //口の左側へ後退
  kaku;
  turn_right(380,50);   //旋回を利用して口を左から右へニコッとなるように描く
  hanasu;
   }

こんな感じになりました。
#ref(似顔絵.png)
**プログラムで修正、工夫したこと [#s13fa119]
何回も秒数を調節して次の顔のパーツにスムーズに進めるようにした。
ロボットを左右に振らすことで前髪を作り出した。
目が細いため、ロボットを直線に動かせた。
口はロボットの旋回を利用して描いた。

**感想 [#pa654b9b]
初めてのプログラミングでとても苦労しました。ロボットも動く時と動かない時があって大変でした。自分でもロボットを動かすことができるんだなと思いました。この経験は非常に貴重だと思うので今後の課題も班と協力して成功できたらいいなと思います。

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