目次 #contents *課題 [#f9ce3ee1] 各自の名前の中の一文字をA4用紙の中に書きなさい。 ただし7画以上の文字を選ぶこと。 もし7画以上の文字がない場合には合計7画以上になるように複数の文字を書きなさい。 以下の点に注意すること。 -マクロや関数、サブルーチンなどを使い、main関数がなるべく単純になるようにプログラムを作ること。 -定数名やマクロなどは分かりやすい名前を用いること -余裕をもってA4の紙の中に収まる大きさにすること。読める範囲ならばいくら小さくてもよい。 -ペン以外はキットの部品を使うこと -輪ゴムは切れやすく高価なので慎重に扱い、張力がかかりすぎないようにすること。 *ロボットを製作するにあたって [#jfd24065] こうしたロボット製作に関してはチーム全員が初心者であり、あまりにも知識がないので、 自分たちで一から動くロボットを作るのは困難であると判断し、 過去の作品を参考にロボットを作成しました。 *完成した作品 [#i73f3ac4] 前面 前面に筆を動かすアームを取り付けた。前輪は小さいタイヤ。 #ref(./IMG_8484.JPG) 左面 いろいろペンで試した結果、筆ペンでなければ上手く書けないと判断し、 費用はかかるが筆ペンを購入。実際、筆ペンなら上手く書けた。 #ref(./IMG_8485.JPG) 後面 機体のバランスを保つために後方にコンピュータ本体を設置した。後輪は大きいタイヤ。 #ref(./IMG_8486.JPG) 右面 ペン本体を設置。ペンを上下させるモーターを設置。 重量のバランスを保つため、ペンと反対側に設置。 #ref(./IMG_8487.JPG) 上面 機体を壊れないように上からパーツをかぶせて固定した。 #ref(./IMG_8488.JPG) **接続端子 [#k7e93a35] A … モータA(筆の上げ下げ) B … モータB(アームの左右移動) C … モータC(車体の前後移動) *工夫した所 [#l4f0bc11] **プログラム [#ee527cd8] マクロによる定義を使うことでプログラムを見やすく、かつ変更しやすくした。 書き順や書き方のルールを無視すれば、効率よく書かせることもできるが、 今回は敢えて書き順通りに書くようにした。 「植」 #define pen_up OnRev(OUT_A);Wait(50);Off(OUT_A) // ペンを上げる #define pen_down OnFwd(OUT_A);Wait(50);Off(OUT_A) // ペンを下げる #define iti OnFwd(OUT_B);Wait(15);Off(OUT_B);pen_up;OnRev(OUT_B)\ Wait(6);Off(OUT_B) // 一画目 #define ni OnRev(OUT_C);Wait(15);Off(OUT_C);pen_down;\ OnFwd(OUT_C);Wait(42);Off(OUT_C);pen_up;OnRev(OUT_C);Wait(30);Off(OUT_C) // 二画目 #define san pen_down;OnFwd(OUT_B);OnRev(OUT_C);Wait(20);Off(OUT_BC);\ pen_up;OnRev(OUT_B);OnFwd(OUT_C);Wait(20);Off(OUT_BC); // 三画目 #define yon pen_down;OnFwd(OUT_BC);Wait(15);Off(OUT_BC)\ ;pen_up;OnRev(OUT_BC);Wait(15);Off(OUT_BC); // 四画目 #define go OnRev(OUT_B);Wait(15);Off(OUT_B);pen_down;OnRev(OUT_B);Wait(15);\ Off(OUT_B);pen_up;OnFwd(OUT_B);Wait(7);Off(OUT_B); // 五画目 #define roku OnRev(OUT_C);Wait(7);Off(OUT_C);pen_down;OnFwd(OUT_C);Wait(15);\ Off(OUT_C);pen_up; //六画目 #define nana OnFwd(OUT_B);Wait(6);Off(OUT_B);pen_down;OnFwd(OUT_C);Wait(35);\ pen_up;OnRev(OUT_C);Wait(35);Off(OUT_C); // 七画目 #define hati pen_down;OnRev(OUT_B);Wait(12);Off(OUT_B);\ OnFwd(OUT_C);Wait(35);pen_up; // 八画目 #define kyu OnRev(OUT_C);Wait(23);Off(OUT_C);OnFwd(OUT_B);Wait(13);Off(OUT_B);\ pen_down;OnRev(OUT_B);Wait(13);Off(OUT_B);pen_up; // 九画目 #define ju OnFwd(OUT_C);Wait(10);OnFwd(OUT_B);Wait(13);Off(OUT_B);pen_down\ ;OnRev(OUT_B);Wait(13);Off(OUT_B);pen_up; // 十画目 #define juiti OnFwd(OUT_C);Wait(11);OnFwd(OUT_B);Wait(13);Off(OUT_B);pen_down\ ;OnRev(OUT_B);Wait(13);Off(OUT_B);pen_up; // 十一画目 #define juni OnFwd(OUT_B);Wait(20);pen_down;OnFwd(OUT_C);Wait(6);Off(OUT_C);\ OnRev(OUT_B);Wait(20);Off(OUT_B);pen_up // 十二画目 task main () { iti; // 一画目 ni; // 二画目 san; // 三角目 yon; // 四画目、ここまで木へん go; // 五画目 roku; // 六画目 nana; // 七画目 hati; // 八画目 kyu; // 九画目 ju; // 十画目 juiti; // 十一画目 juni; // 十二画目 } **タイヤ [#md9a8fd7] 一つのモータで二つのタイヤを回せるようにした。 モータによって回す後輪のタイヤを大きくすることで推進力を大きくし、 前輪の小さいタイヤにモータがなくてもいいようにした。 #ref(./IMG_8490.JPG) **アーム [#a24e8362] アームを片側に寄せると重さによってバランスが悪くなるため、 アームの両端に筆を上下させるモータと筆の固定部をそれぞれ取り付ける案を採用した。 しかし、そのままではアームの可動範囲が短くなってしまうので、パーツのある限り延長した。 そうしたら今度はアームの前後のバランスが悪くなった。 アームを太くして、なめらかに滑る程度にはさむことでアームの前後のバランスをとることに成功。 #ref(./IMG_8497.JPG) 筆はアームに突起をつけて、そこにゴムをひっかけて筆を巻きつけた。 #ref(http://yakushi.shinshu-u.ac.jp/robotics/?2015a%2FMember%2Fzetton%2FMission1/1433494056150.jpg) #ref(./1433494056150.jpg) **その他 [#ue05a6e3] 分解・組立が簡単にできる設計だが、バランスの悪さや壊れやすさという欠点ができた。 そのため分解・組立が簡単である利点をできるだけそのままに固定パーツを増設した。 *反省・感想 [#ga9933ac] 授業中では作る時間はなかったので土日もつかってロボットを作った。 なかなか上手く字が書けなかった。 特に複数の部分に分かれている字は書き始めるところに筆を持ってくるのが大変だった。 アームが短くて小さい字しか書けなくなってしまった。 パーツが限られていたのでできなかったが、欲を言えばもっとアームを長くしたかった。 今回は過去の作品を参考にしたけれど、いつかは一から作るのに挑戦してみたい。 *参考 [#fdbd1e02] http://yakushi.shinshu-u.ac.jp/robotics/?cmd=read&page=2006a%2FD7%2F%B2%DD%C2%EA%A3%B1%B1%A6&word=%C3%A3%C9%AE