[[2018b/Member]] #contents *課題1 [#o357f8f6] これまで住んだことのある都道府県名、市町村名、地区名などの中から 2文字以上のものを選び、それをA4の紙を書くロボットを製作せよ。 **選んだ文字 [#babe1b86] 自分の出身地が三日市だったので、それを書くことにした。 *ロボットの説明 [#d695e29d] **書くための工夫 [#c3647615] x軸方向への移動を上の小さな車体で行い、y軸方向への移動を下の大きな車体で行うことにした。z軸方向(ペンの上げ下げ)は、上の車体についている小さなモーターで行う。 **書く順番 [#u3168dae] x軸方向、y軸方向への動きだけで、斜めの動きがないので、横を先に書き、縦を後に書くことにした。ただ、x軸、y軸の正の方向へ書こうとするとペンが思うように動かず文字が書けないので、面倒ではあるがそれぞれ負の方向への動きだけに限定することにした。 まず、上の三本を完成させる。その次にy軸方向へ車体を動かし、真ん中の三本を完成させる。そして、またy軸方向へ車体を動かし、“日”の下側と“三”の下側を完成させる。そのあとにx軸方向へと動かし、“日”の縦棒を日本完成させ、最後にx軸方向へと動かし、“市”の縦棒を完成させる。 紙に書くとわかりやすいと思ったので書いてみた &ref(S__227377155.jpg); こんな感じで、自分が考えられる書き順の中で最も簡単だと思うものを採用した。 &ref(S__225419270.jpg); この部分がx軸方向への動きとz軸方向への動きを可能にしている。 &ref(S__225419273.jpg); この部分が上にある写真の部品を乗っける部分と、y軸方向への動きを可能にしている。 *プログラミング [#j0ef7126] 動かすにあたって歳先ほどにも述べたように工夫が必要だったので、少しプログラムが長くなってしまった。 OnRev(OUT_B,10); Wait(500); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_B,10); Wait(1000); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_B,10); Wait(1000); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); ここまでで上の3本線を書く OnFwd(OUT_A,10); Wait(750); Off(OUT_A); OnRev(OUT_B,10); Wait(7500); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_B,10); Wait(1000); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_B,10); Wait(1500); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(1000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_A,10); Wait(1000); Off(OUT_A); ここまでで真ん中の3本線を書く OnRev(OUT_B,10); Wait(3800); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_B,10); Wait(1000); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); ここまででしたの2本線を書く OnRev(OUT_B,10); Wait(4200); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnRev(OUT_A,15); Wait(800); Off(OUT_A); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_A,10); Wait(1600); Off(OUT_A); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnRev(OUT_A,15); Wait(800); Off(OUT_A); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); ここまでで“日”が完成する OnRev(OUT_B,10); Wait(3700); Off(OUT_B); OnFwd(OUT_A,10); Wait(2200); Off(OUT_A); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnRev(OUT_A,15); Wait(1300); Off(OUT_A); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnFwd(OUT_A,10); Wait(2200); Off(OUT_A); OnFwd(OUT_B,10); Wait(1200); Off(OUT_B); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnRev(OUT_A,15); Wait(300); Off(OUT_A); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); OnRev(OUT_B,10); Wait(2000); Off(OUT_B); OnFwd(OUT_A,10); Wait(700); Off(OUT_A); OnRev(OUT_C,4); Wait(1500); Off(OUT_C); OnRev(OUT_A,15); Wait(300); Off(OUT_A); OnFwd(OUT_C,13); Wait(1300); Off(OUT_C); ここで“市”が完成する *完成した文字 [#d742845b] 本番の一日前に完成した文字がこれである。 &ref(S__225501189.jpg); *感想と考察 [#e8c99a60] ・キャタピラの部分がなかったためにX軸方向への動きを作るのに苦労した。 ・パーツが少し足りずにバランスが悪くなってしまい、まっすぐに描くことができなかった。 ・上からのおもりがなかったために、少し文字が曲がってしまった。 ・文字を書くプログラミングが、こんなにも難しいものだと知った。 ・次からは関数などを勉強してもっと簡単なプログラミングを書こうと考えた。 次回のプログラミング作成に先駆けして、大量に使用するプログラミングを簡単な定義づけをすることにより短くする。