*課題1 [#m14f0258]
これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ。
**選んだ文字 [#y6e7396e]
私が住んでいたのは、うるま市みどり町という漢字がない地域だったので、「市町」という文字を選びました。
*ロボットについて [#v42bb89b]
今回、私たちのグループはX軸Y軸に移動する型のロボットを作りました。役割別に見ると、�―弔貌阿�部分、��横に動く部分、��ペンを上げ下げさせる部分に分かれています。
**�―弔貌阿�(前後に動く) [#kee6ff5d]
:赤丸の部分です。ここで工夫したことはあります。1つは3つの部分にモーターをそれぞれ使いたかったので、モーター1つでタイヤ2つを回せるようにしたことです。そのために直角に回る噛み合って回る歯車を使用しました。そしてもう1つは、他のところにブロックを使いたかったので、できるだけ少ないブロックでこの部分は作りました。|
#ref(IMG_1203.jpg,,25%)
**��横に動く [#ad92c1e3]
:横線を書くことを考えたときに、ブロックで棒のようなものを作ってペンを固定して1につけて伸び縮みさせるか、レールを作ってペンを移動させるかということが考えられました。初め前者で行こうとしたのですが、良いアイディアが思い浮かばなかったので、レールを作ってペンを動かすことにしました。次に問題になったのがレールの位置です。初め上の写真のように、レールを1で作った部分の前側につけていました。しかし、そうするとユレがひどく、文字が書けなかったので、1で作った部分の下につけて安定させました。また、横に車輪をつけることで前後の動きもスムーズにしました。|
#ref(IMG_1238.JPG,,25%)
#ref(IMG_2239.JPG,,10%)
#ref(IMG_6740.JPG,,10%)
**��ペンを上げ下げさせる [#r3989b17]
:ペンの上げ下げには歯車を2個使いました。歯車の外側の穴をに、棒を刺し、長いブロックで固定しました。こうすることで、歯車を回すだけで、ペンを上げ下げできるようにしました。|
#ref(IMG_3399.JPG,,10%)
*プログラム [#vc0fe171]
:一文字ずつつくった。「市」という漢字から初め、次に「町」のプログラムをつくった。少しなれてきた2文字目から定義を使い始めた。縦線、横線、ペンの上げ下げをあらかじめ定義した。(s:短い、l:長い)また、ロボットの動きが早く一つの動きのあとにすぐ動きを入れると文字のズレが大きくなるので、動作のプログラムの間にWaitをいれてできるだけズレないないようにした。|
#define up OnFwd(OUT_A);Wait(10);
#define sright OnFwd(OUT_B);Wait(15);Off(OUT_B);
#define sleft OnRev(OUT_B);Wait(25);Off(OUT_B);
#define lright OnFwd(OUT_B);Wait(55);Off(OUT_B);
#define lleft OnRev(OUT_B);Wait(40);Off(OUT_B);
#define down OnRev(OUT_A);Wait(18);Off(OUT_A);
#define sue OnFwd(OUT_C);Wait(28);Off(OUT_C);
#define ssita OnRev(OUT_C);Wait(25);Off(OUT_C);
#define lsita OnRev(OUT_C);Wait(30);Off(OUT_C);
**市 [#tb0caed7]
task main ()
{
OnFwd(OUT_B);
Wait(30);
Off(OUT_B);
OnRev(OUT_B);
Wait(23);
Off(OUT_B);
Wait(100);
OnFwd(OUT_C);
Wait(10);
Off(OUT_C);
Wait(100);
OnRev(OUT_C);
Wait(35);
Off(OUT_C);
Wait(80);
OnFwd(OUT_A);
Wait(10);
OnFwd(OUT_B);
Wait(14);
Off(OUT_AB);
OnRev(OUT_A);
Wait(7);
Off(OUT_A);
Wait(100);
OnFwd(OUT_C);
Wait(20);
Off(OUT_C);
Wait(100);
OnRev(OUT_B);
Wait(30);
Off(OUT_B);
OnRev(OUT_C);
Wait(20);
Off(OUT_C);
Wait(100);
**文字の間 [#c42f7667]
up;
OnRev(OUT_C);
Wait(10);
Off(OUT_C);
Wait(100);
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
down;
Wait(100);
**町 [#mc3dade1]
ssita;
Wait(100);
sright;
Wait(100);
sue;
Wait(100);
sleft;
Wait(100);
OnFwd(OUT_B);
Wait(9);
Off(OUT_B);
Wait(100);
ssita;
Wait(100);
up;
OnFwd(OUT_C);
Wait(15);
Off(OUT_C);
OnRev(OUT_B);
Wait(22);
Off(OUT_B);
Wait(100);
down;
Wait(100);
lright;
OnRev(OUT_B);
Wait(15);
Off(OUT_B);
Wait(100);
lsita;
}
*まとめ [#h85fa3cb]
**かけた文字 [#tfa41fd8]
#ref(IMG_1204.jpg,,10%)
**反省・感想 [#y1c110c6]
:色々工夫したが、ペンのブレは収まらなかった。また、歯車を走らせるレールに気づけばもう少しコンパクトにロボットを作れて、ブレもつくったロボットより少なかったのではないと思う。この課題を通して、プログラミングよりロボットを作ることが難しかった。次は使ってないプログラミングのテクニックを余裕があれば使いたい。|