[[2017a/Member]]

目次
#contents

*課題1 [#ycd6950f]
・A4の紙に松本の大学生活を表す漢字1文字を書くロボットを制作する。

・7画以上の漢字であること。

・文字は15cm四方に収まる大きさにすること。

**選んだ漢字 [#tc0d514b]
松本に来てふと見上げた夜空の星がとても綺麗で印象的だったので「星」という漢字にした。
*ロボットについて [#e56fdac3]
**本体について [#b7ce26b0]
私たちは本体部分をほとんど改造せずに重心を低くするのみだった。(写真1を参照)
#ref(2017a/Member/sassa/Mission1/ロボティクス.JPG,20%,写真1);

**アーム部分について [#p8a0a3d6]
今回私たちはロボットの先にペンを取り付けるというシンプルな方法を取った。(写真2を参照)
#ref(2017a/Member/sassa/Mission1/ロボティクス3.JPG,20%,写真2);


*プログラムについて [#f8e75120]
**書き順 [#uad5c995]
私は書き順にはこだわらず、次の写真のような書き順で「星」を書いた。
#ref(2017a/Member/sassa/Mission1/hoshi 書き順2.jpg,100%);

**プログラム [#e8089937]
***工夫した点 [#fcf74579]
・私たちの組み立てたロボットは左右のタイヤの回転数が若干異なっていたため左右のモーターの速度を変え調節した。

・横の動きを連続して書くことによりプログラムを簡略化した。
***モーターの説明 [#n3593154]
回転させるモーターはA,B,Cの3つがあり、それぞれ

A:ペンの上げ下げをする。

 OnFwd(OUT_A)→ペンを下ろす
 OnRev(OUT_A)→ペンを上げる

B:右のタイヤを回転させる。

C:左のタイヤを回転させる。

となっている。
***プログラムの説明 [#y1bf5cc1]
 #define speed_left 50//左のモーターの回転速度
 #define speed_right 47//右のモーターの回転速度
 #define time_pen 90//ペンの上げ下げする時間
 #define move_time_L 333//1画目と2画目の動く時間
 #define move_time_S 410//2~7画目の動く時間
・1画目と2画目の縦線を書くプログラム
 #define long_line OnFwd(OUT_A,50);Wait(time_pen);Off(OUT_A);Wait(1000);\ OnRev(OUT_B,speed_right);OnRev(OUT_C,speed_left);Wait(move_time_L);Off(OUT_BC);Wait(1000);OnRev(OUT_A,50);\
  Wait(time_pen);Off(OUT_A);Wait(1000);OnFwd(OUT_B,speed_right);OnFwd(OUT_C,speed_left);Wait(move_time_L);\
  Off(OUT_BC);Wait(1000);
・3~7画目を書くプログラム
 #define short_line OnFwd(OUT_A,50);Wait(time_pen);Off(OUT_A);Wait(1000);\
  OnFwd(OUT_B,speed_right);OnFwd(OUT_C,speed_left);Wait(move_time_S);Off(OUT_BC);Wait(1000);OnRev(OUT_A,50);\
  Wait(time_pen);Off(OUT_A);Wait(1000);OnRev(OUT_B,speed_right);OnRev(OUT_C,speed_left);Wait(420);\
  Off(OUT_BC);Wait(1000);
・右に90°回転し、まっすぐ直進し左に90°回転するプログラム
 #define turn_s OnFwd(OUT_B,speed_right);OnRev(OUT_C,speed_left);Wait(545);\
  Off(OUT_BC);Wait(1000);OnFwd(OUT_B,speed_right);OnFwd(OUT_C,speed_left);Wait(180);Off(OUT_BC);Wait(1000);\
  OnFwd(OUT_C,speed_left);OnRev(OUT_B,speed_right);Wait(563);Off(OUT_BC);Wait(1000);
***書き出し [#ub429edb]
(書き順、書き方は書き順欄を参照)
 task main()
 {
1画目
   long_line;
1画目から2画目に移動
   OnFwd(OUT_C,speed_left);
   OnRev(OUT_B,speed_right);
   Wait(650);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(450);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_B,speed_right); 
   OnRev(OUT_C,speed_left);
   Wait(590);
   Off(OUT_BC);
   Wait(1000);
2画目
   long_line;
2画目から3画目に移動
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(750);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_B,speed_right);
   OnRev(OUT_C,speed_left);
   Wait(550);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_B,speed_right);
   OnRev(OUT_C,speed_left);
   Wait(800);
   Off(OUT_BC);
   Wait(1000);
3〜7画目
   repeat(5){
     short_line;
     turn_s
   }
8画目
   OnRev(OUT_B,speed_right);
   OnRev(OUT_C,speed_left);
   Wait(205);
   Off(OUT_BC);
   Wait(1000);
   OnFwd(OUT_A,50);
   Wait(time_pen);
   Off(OUT_A);
   Wait(1000);
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(820);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,50);
   Wait(time_pen);
   Off(OUT_A);
   Wait(1000);
8画目から9画目に移動
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(810);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(917);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_B,speed_right);
   OnRev(OUT_C,speed_left);
   Wait(634);
   Off(OUT_BC);
   Wait(1000);
9画目
   OnFwd(OUT_A,50);
   Wait(time_pen);
   Off(OUT_A);
   Wait(1000);
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(298);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,50);
   Wait(time_pen);
   Off(OUT_A);
   Wait(1000);
9画目から10画目に移動
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(1050);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(950);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_B,speed_right);
   OnRev(OUT_C,speed_left);
   Wait(490);
   Wait(400);
   Off(OUT_BC);
   Wait(1000);
10画目
   OnFwd(OUT_A,50);
   Wait(time_pen);
   Off(OUT_A);
   Wait(1000);
   OnFwd(OUT_B,speed_right);
   OnFwd(OUT_C,speed_left);
   Wait(400);
   Off(OUT_BC);
   Wait(1000);
   OnRev(OUT_A,50);
   Wait(time_pen);
   Off(OUT_A);
 }
*まとめ [#de374650]
**結果 [#dfbf4f86]
上記のプログラムで「星」を書いた結果次の写真のようになった。
#ref(2017a/Member/sassa/Mission1/HOSHI.jpg,50%)
**感想 [#n73a904e]
今回初めて自分でプログラミングしてみたが、回転する角度がおかしくなってしまったり線が長すぎや短すぎるという事態が多発した。

しかし、改良を加えていくにつれてだんだんきちんとした「星」になったと思う。

10画目が少し上になってしまったのは残念だが最初に書いていたものに比べると格段に良くなったと思う。

今回のプログラミングを通してプログラミングは大変だがきちんとしたものが完成した時の嬉しさ・達成感がとてもいいものであると思った。

次回も今回の達成感と嬉しさを忘れずにより一層頑張ろうと思う。

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