目次
これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作せよ。
地元であり、また書きやすい「上田」にしようと考えたが、画数が少なかったため、上田市 にした。
・過去の受講生のページを参考にしてペン先がy軸を移動できるアームを作った。アームは曲げ伸ばしできる。モーターが動くと、アームがマジックハンドのように伸び縮みし、ペン先が移動する仕組みとなっている。 (参考にしたページ→ 2018b/Member/ndksiba/Mission1
・最初は動きやすさを重視し、アームの先はもう少し自由な構造だったが、自由すぎて動いた後で元の位置に戻ってこないことがあったので、自由度を減らして写真のような構造に落ち着いた。
・「上」の字以外は正しい書き順になるようにした。
・プログラムが長くなることが予想されたので、定義や変数を駆使して短く書きやすくなるようにした。
・定義名を日本語にしたので、美しいとは言い難いが視覚的に分かりやすい。
#define pen_sage OnRev(OUT_B,15);Wait(300);Off(OUT_B); //ペンを下げる #define pen_age OnFwd(OUT_B,15);Wait(300);Off(OUT_B); //ペンを上げる #define tate(s) OnFwd(OUT_A,25);Wait(s);Off(OUT_A); //縦画を書く #define yoko(s) OnFwd(OUT_C,30);Wait(s);Off(OUT_C); //横画を書く #define return_t(s) OnRev(OUT_A,25);Wait(s);Off(OUT_A); //縦方向に戻る #define return_y(s) OnRev(OUT_C,30);Wait(s);Off(OUT_C); //横方向に戻る
task main ()
{ pen_sage; yoko(300); //1画目 pen_age; tate(1000); return_y(950); pen_sage; yoko(980); //2画目 pen_age; return_y(480); return_t(2000); pen_sage; tate(2000); //3画目 pen_age;
tate(300); return_y(270); pen_sage; tate(1200); //1画目 pen_age; return_t(1200); pen_sage; yoko(700); tate(1200); //2画目 pen_age; return_y(450); return_t(1200); pen_sage; tate(1200); //3画目 pen_age; return_t(600); return_y(270); pen_sage; yoko(700); //4画目 pen_age; return_y(700); tate(600); pen_sage; yoko(700); //5画目 pen_age;
return_y(450); tate(300); pen_sage; tate(300); //1画目 pen_age; return_y(450); pen_sage; yoko(980); //2画目 pen_age; return_y(700); tate(300); pen_sage; tate(450); //3画目 pen_age; return_t(450); pen_sage; yoko(600); tate(450); //4画目 return_y(100); pen_age; return_y(300); return_t(750); pen_sage; tate(900); //5画目 pen_age; }
・時間が無く、妥協が目立った。また、せっかくロボットをxy型にしたが、座標計算が雑で狙い通りの線が引けなかった。次はさらにクオリティの高いものを作りたい。