[[2018a/Member]]
目次
#contents
*課題1 [#sbcbbea9]
都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ。
**選んだ文字 [#s284cca8]
栃木県の「日光」にした。
*ロボット [#i3ac2b94]
**全体 [#tc633551]
#ref(ロボ1.jpg)
-このロボットは��y軸移動、��x軸移動、��上げ下げの3つの構造がある。
-ペンを下げたときにブレが少なくなるように、ペンは筆ペンを使用。
**��y軸移動の構造 [#l41aa322]
***前部分 [#fb1cb284]
#ref(ロボ3.jpg)
***後ろ部分 [#i12520dc]
#ref(20180607_155730.jpg)
-y軸移動に関しては、ただ丸を付けた部分(モーターとタイヤを連動させた部分)を動かして、前後に動くだけの構造になっている。
**��x軸移動の構造 [#kc4c04a8]
#ref(20180607_164812.jpg)
-x軸移動はこれまたモーターとタイヤを連動させてレールの上を矢印のように移動する構造になっている。
-ペンを上げ下げするために、モーターの土台を少し高くする必要があったので、モーターとタイヤは3つのギアで連動させた。
-ただレールを走らせるだけだとブロックの高さの関係上、ブレがとても大きくなってしまうので、丸をつけた部分と前方の同じ場所に支えを付けることでブレを小さくした。(写真は後ろ部分)
**��上げ下げの構造 [#kebd620a]
#ref(20180607_155702.jpg)
-上げ下げは、歯車が矢印のように動くことでペンが上下するようになっているのだが、歯車の手前のブロックで左右の幅が固定されているため、数cmしか上下できない。
-しかし、逆に歯車の手前のブロックで固定することで、安定して上げ下げができるようになった。
*プログラム [#sc1b331b]
**完成プログラム [#m8e24c30]
***サブルーチン [#a3b1ac8a]
#define go OnFwd(OUT_C);Wait(40);Off(OUT_C);
#define back OnRev(OUT_C);Wait(40);Off(OUT_C);
#define right OnRev(OUT_B);Wait(26);Off(OUT_B);
#define left OnFwd(OUT_B);Wait(26);Off(OUT_B);
#define up OnFwd(OUT_A);Wait(10);
#define down OnRev(OUT_A);Wait(10);
#define short OnFwd(OUT_C);Wait(10);Off(OUT_C);
#define short_right OnRev(OUT_B);Wait(15);Off(OUT_B);
#define w Wait(100)
***「日」 [#yccf66a7]
task main ()
{
go //1角目
w;
up //1角目終わり
w;
back
w;
down //2角目
w;
right
w;
go
w;
up //2角目終わり
w;
back
w;
left
w;
OnFwd(OUT_C);
Wait(20);
Off(OUT_C);
w;
down //3角目
w;
right
w;
up //3角目終わり
w;
left
w;
OnFwd(OUT_C);
Wait(20);
Off(OUT_C);
w;
down //4角目
w;
right
w;
up //4角目終わり
w;
***「光」 [#ib8c6c8d]
OnFwd(OUT_C);
OnFwd(OUT_C); //「光」までの移動
Wait(15);
Off(OUT_C);
w;
down
down //1角目
w;
OnFwd(OUT_C);
Wait(20);
Off(OUT_C);
w;
up
up //1角目終わり
w;
OnRev(OUT_C);
Wait(20);
Off(OUT_C);
w;
OnFwd(OUT_B);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
w;
down
down //2角目
w;
short
w;
up
up //2角目終わり
w;
OnRev(OUT_C);
Wait(10);
Off(OUT_C);
w;
OnRev(OUT_B);
Wait(23);
Off(OUT_B);
w;
down
down //3角目
w;
short
w;
up
up //3角目終わり
w;
OnFwd(OUT_B);
Wait(20);
Off(OUT_B);
w;
OnFwd(OUT_C);
Wait(13);
Off(OUT_C);
w;
down
down //4角目
w;
OnRev(OUT_B);
Wait(40);
Off(OUT_B);
w;
up
up //4角目終わり
w;
OnFwd(OUT_B);
Wait(18);
Off(OUT_B);
w;
down
down //5角目
w;
OnFwd(OUT_C);
Wait(20);
Off(OUT_C);
w;
up
up //5角目終わり
w;
OnRev(OUT_C);
Wait(20);
Off(OUT_C);
w;
OnRev(OUT_B);
Wait(15);
Off(OUT_B);
w;
down
down //6角目
w;
OnFwd(OUT_C);
Wait(20);
Off(OUT_C);
w;
short_right
w;
OnRev(OUT_C);
Wait(10);
Off(OUT_C);
w;
up
up //6角目終わり
}
**プログラムの説明 [#j4756af5]
-Aが上げ下げ、Bがx軸移動、Cがy軸移動。
-しっかり書き順通りに書けるようプログラムした。
-ペンの上げ下げは「up」と「down」で定義づけた。
-「日」は同じ動作が何度も続いたので、定義づけてプログラムを少し簡略化した。
-「光」のほうは、同じ動作ではあるが秒数が異なる部分ばかりだったので1回1回秒数を変えてプログラムした。
-最初一つ一つの動作が早すぎて全然上手く書けなかったので、動作の間に数秒待ち時間を入れることで一画一画しっかり書けるようにした。
*まとめ [#kc465972]
**結果 [#x316ea1a]
#ref(文字.jpg)
筆ペンで書いたので薄かったりするところもあるが、基本的にしっかり書けたと思う。
**反省点 [#ef362151]
-ロボットをもう少しコンパクトにできれば良かった。
-x軸移動の部分が支えを付けたとは言っても、やはりブレがまだ大きかった。
-ロボットが典型的なx,y軸移動型だったので、「光」のはらいの部分が再現できなかった。
-x軸移動に関してはギザギザのパーツを使って組み立てれば良かったと思った。
-もう少しプログラミングをまとまった形にできれば良かった。
**感想 [#ob080ee6]
-まずロボットを作る時点でどのような構造にするか考えるのにとても苦労した。
-プログラミングもまたまだ不慣れな状態だったのでこちらもかなり苦労した。
-今回はあまり良い出来とは言えないので今回のことを生かして次の課題に繋げていこうと思う。