目次 #contents * 課題について [#o040cb6c] 課題は[[こちら>2017a/Mission1]]を参照 どの漢字にしようか迷ったが、松本は標高が高いと感じたので「高」という漢字を選んだ。 * ロボットの説明 [#x0ba2a96] ** 全体 [#lf73fcc5] 漢字を書くために、ペンをx,y軸に動かして書く方法とロボット自体に取り付けて書く方法があるが、私たちは組み立てやすくて持ち運びが楽な、ロボット自体にペンを取り付けて書く方法で組み立てをした。また、タイヤは初期のものから変えずに使用し、なるべくシンプルなロボットになるようにした。 #ref(2017a/Member/kazubon/Mission1/DSC_001.jpg,100%,ロボ前全体写真) #ref(2017a/Member/kazubon/Mission1/DSC_003.jpg,100%,ロボ後全体写真) ** 機構 [#q1403b9b] 機構は下の写真のようになっている。 #ref(2017a/Member/kazubon/Mission1/1495677085600.jpg,25%,機構上部) ペンはロボットのほぼ中央に取り付けてある。 #ref(2017a/Member/kazubon/Mission1/1495677088533.jpg,25%,機構下部) 中心に穴が開いた灰色の薄いブロックを上下に2枚くっつけ、そこにペンのリフィルを通すことでペンが固定される。さらに灰色のブロックの上に穴が開いていない黒色の厚いブロックをくっつけ、これらを車体に設置した黄色いゴムではさみ、紙に押し付けることで線を書くことができる。写真のようにギアを使ってブロックを上げると、ブロックにはリフィルが固定されているのでリフィルを上げることができ、何も書かれない状態にすることができる。 &ref(2017a/Member/kazubon/Mission1/DSC_0011.jpg,50%,機構正面); &ref(2017a/Member/kazubon/Mission1/DSC_0012.jpg,50%,機構側面); * プログラムの説明 [#ae3ee2dc] ** 文字の書き順 [#l25677c1] 動きを簡素化するために通常とは異なる書き順で書くようにしている。 #ref(2017a/Member/kazubon/Mission1/DSC_005.jpg,75%,高説明) ** プログラム [#eaa133a1] 前後の動きに加え、ペンを押さえつけないで前後の動きや右回り左回りの動きをするように定義をした。 ロボットの重心が中心よりも上にあり、動作を続けて行うとぐらついてプログラム通りに正しく動かなくなってしまうため、どの定義にも「Wait(50)」を入れてある。 使用した関数はg,h,x,yである。特に意味はない。 #define mae_susumu(x) OnFwd(OUT_AC); Wait(x); Off(OUT_AC); Wait(50) //xの値だけ進む #define mae_susumu_up(x) OnFwd(OUT_AC); OnRev(OUT_B); Wait(x); Off(OUT_ABC); Wait(50); // ペンを上げてxの値だけ進む #define ushiro_sagaru(y) OnRev(OUT_AC); Wait(y); Off(OUT_AC); Wait(50); //yの値だけ後ろに進む #define ushiro_sagaru_up(y) OnRev(OUT_ABC); Wait(y); Off(OUT_ABC); Wait(50); //ペンを上げてyの値だけ後ろに進む #define senkai_migi_up(g) OnFwd(OUT_A); OnRev(OUT_BC); Wait(g); Off(OUT_ABC); Wait (50); //ペンを上げてgの値だけ右旋回する #define senkai_hidari_up(h) OnFwd(OUT_C); OnRev(OUT_AB); Wait(h); Off(OUT_ABC); Wait (50); //ペンを上げてhの値だけ左旋回する このロボットは1回転したときに半径1�僂留澆鮟颪�ため、90度回転しただけでは線同士が離れてしまう。そこでサブルーチンを使用し、前に進んだ後回転して後ろに下がることで線同士の離れを最小限にするようにした。 sub kado_hidari_magaru() { mae_susumu_up(8); senkai_hidari_up(115); ushiro_sagaru_up(8); } sub kado_migi_magaru() { mae_susumu_up(8); senkai_migi_up(115); ushiro_sagaru_up(8); } そしてメインのプログラムは下のように出来上がった。 task main() { mae_susumu(20);//一画目�� mae_susumu_up(10); senkai_migi_up(115); mae_susumu_up(57); ushiro_sagaru(107);//二画目�� mae_susumu_up(95); senkai_hidari_up(116); mae_susumu_up(10); mae_susumu(21);//三画目�� kado_hidari_magaru(); mae_susumu(53);//四画目�� kado_hidari_magaru(); mae_susumu(21);//五画目�� kado_hidari_magaru(); senkai_hidari_up(4); mae_susumu(53);//六画目�� mae_susumu_up(32); senkai_hidari_up(116); mae_susumu_up(47); mae_susumu(48);//七画目�� ushiro_sagaru_up(58); senkai_hidari_up(117); mae_susumu(90);//八画目�� kado_migi_magaru(); senkai_migi_up(4); mae_susumu(48);//九画目�� mae_susumu_up(15); senkai_migi_up(174); mae_susumu(6);//十画目�� mae_susumu_up(10); senkai_hidari_up(57); mae_susumu_up(12); mae_susumu(49);//十一画目�� kado_hidari_magaru(); ushiro_sagaru(27);//十二画目�� kado_hidari_magaru(); mae_susumu(49);//十三画目�� kado_migi_magaru(); mae_susumu(27);//十四画目�� } 秒数が細かくなっているのは、私が書いた漢字に沿うようにプログラムを書いたためである。定義とサブルーチンのおかげで、画数の割にプログラムは思っていたほど長くはならなかった。 * まとめ [#z3d8c341] ** 完成した字 [#e1fca067] #ref(2017a/Member/kazubon/Mission1/DSC_004.jpg,100%,漢字出来上り) 誰にでも伝わるレベルで完成させることができたが、ボールペンのインクがかすれてしまっている箇所があったり、電圧の変動によって今まで正確に書けていたところがずれてしまったりしたのは少し残念である。 ** 感想 [#yd9ccc3f] 今回が人生初のプログラミングで、自分で思い通りにロボットを動かせるかどうかとても心配だったが、何とか動かすことができた。プログラミングについては長くなってしまい正確性に欠けるため、改善の余地がたくさんあると思った。課題2ではさらに難しいことをすると思われるが、今回学んだことを生かして取り組んでいきたい。