[[2015a/Member]]
*書道ロボット [#r87f0821]
**課題 [#va16c90b]
ロボットで名前の中から七画以上の字を書く
「翔」は斜めの部分が多く書くのが難しく他の字は七画未満なので、今回は「野」を書くことにした
**構造 [#we108490]
***ペンの上下運動 [#n8801518]
筆の上下運動にはタイヤでペンをはさみ、タイヤを回転させることによりペンを上下させる方法をとった
筆の上下運動にはタイヤでペンをはさみ、タイヤを回転させることによりペンを巻き上げ上下させる方法をとった。
***横移動 [#vf55f1a8]
できるだけ正確な動きができるようにレールの上を歯車が転がることにより移動する方法をとった
できるだけ正確な動きができるようにレールの上を歯車が転がることにより移動する方法をとった。しかし、そのせいでロボットの前が重くなりすぎてしまったため使わないロボットの部品を使い後ろも重くなるようにした
&ref(./IMG_1367.JPG,50%);
***縦移動 [#v1b45195]
パーツの数が足りずレールを使うのが困難なためタイヤを使って移動することにした
パーツの数が足りずレールを使うのが困難なため大きめのタイヤを使って本体走らせて移動することにした。

&ref(./IMG_1366.JPG,50%);
***過程 [#s7586a59]
最初は縦、横の上下以外のすべての動きをタイヤで行おうととしていたが正確に描くことができない、誤差がでやすいなどの理由で上記の形に変更した。レールを使うことにより正確にまっすぐ書けるのでよりきれいに描けるようになった

**プログラム [#q05790b8]
 「野」を書くプログラムである
書き順は無難に普通の書き順にした。筆が紙についているときとついていない時では動きに違いが出るので何度か調節した
 #define DOWN OnRev(OUT_C);Wait(5);Off(OUT_C);
 #define UP   OnFwd(OUT_C);Wait(5);Off(OUT_C);
&ref(./無題.png,50%);

 #define DOWN OnRev(OUT_C);Wait(5);Off(OUT_C); //ペンを降ろす
 #define UP   OnFwd(OUT_C);Wait(5);Off(OUT_C); //ペンを上げる
 #define tate  OnFwd(OUT_A);Wait(30);Off(OUT_A); //縦に移動する
 #define tatesyou  OnFwd(OUT_A);Wait(15);Off(OUT_A); //縦に短く移動する
 #define yoko  OnFwd(OUT_B);Wait(30);Off(OUT_B); //横に移動する
 #define backtate OnRev(OUT_A);Wait(15);Off(OUT_A); //縦に逆向きに移動する
 #define backtatesyou OnRev(OUT_A);Wait(8);Off(OUT_A); //縦に逆向きに短く移動する
 #define backyoko OnRev(OUT_B);Wait(30);Off(OUT_B); //横に逆向きに短く移動する


 task main()
 {
 DOWN;
 OnFwd(OUT_A);
 Wait(30);
 Off(OUT_A);
 UP;
 OnRev(OUT_A);
 Wait(15);
 Off(OUT_A);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 OnFwd(OUT_A);
 Wait(30);
 Off(OUT_A);
 UP;
 OnRev(OUT_A);
 Wait(15);
 Off(OUT_A);
 OnRev(OUT_B);
 Wait(30);
 Off(OUT_B);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 UP;
 OnRev(OUT_B);
 Wait(30);
 Off(OUT_B);
 OnFwd(OUT_A);
 Wait(30);
 Off(OUT_A);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 UP;
 OnRev(OUT_B);
 Wait(15);
 Off(OUT_B);
 OnRev(OUT_A);
 Wait(15);
 Off(OUT_A);
 DOWN;
 OnFwd(OUT_A);
 Wait(60);
 Off(OUT_A);
 UP;
 OnRev(OUT_B);
 Wait(15);
 Off(OUT_B);
 OnRev(OUT_A);
 Wait(15);
 Off(OUT_A);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 UP;
 OnRev(OUT_B);
 Wait(30);
 Off(OUT_B);
 OnFwd(OUT_A);
 Wait(15);
 Off(OUT_A);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 UP;
 OnFwd(OUT_B);
 Wait(15);
 Off(OUT_B);
 OnRev(OUT_A);
 Wait(60);
 Off(OUT_A);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 OnRev(OUT_B);
 OnFwd(OUT_A);
 Wait(30);
 Off(OUT_A+OUT_B);
 UP;
 OnRev(OUT_A);
 OnRev(OUT_B);
 Wait(15);
 Off(OUT_A+OUT_B);
 DOWN;
 OnFwd(OUT_B+OUT_A);
 Wait(30);
 Off(OUT_A+OUT_B);
 UP;
 OnRev(OUT_B);
 Wait(22);
 Off(OUT_B);
 DOWN;
 OnFwd(OUT_B);
 Wait(30);
 Off(OUT_B);
 OnRev(OUT_B);
 OnFwd(OUT_A);
 Wait(7);
 Off(OUT_A+OUT_B);
 UP;
 OnRev(OUT_B+OUT_A);
 Wait(7);
 Off(OUT_B+OUT_A);
 DOWN;
 OnFwd(OUT_A);
 Wait(90);
 Off(OUT_A);
 OnRev(OUT_B+OUT_A);
 Wait(7);
 Off(OUT_B+OUT_A);
 UP;
 DOWN;tate;UP;backtate; //一画目
 DOWN;yoko;tate;UP;backtatesyou;bavkyoko; //二画目
 DOWN;yoko;UP;backyoko;tatesyou; //三画目
 DOWN;yoko;UP;tatesyou;backyoko; //四画目
 DOWN;longtate;UP;backyokobacktatesyou //五角目
 DOWN;yoko;UP;backyoko;tatesyou; //六角目
 DOWN;yoko:UP;yoko;backtate;backtate; //七画目
 DOWN;yoko;OnRev(OUT_B);OnFwd(OUT_A);Wait(30);Off(OUT_A+OUT_B);UP;OnRev(OUT_A);OnRev(OUT_B);Wait(15);Off(OUT_A+OUT_B); //八画目
 DOWN;OnFwd(OUT_B+OUT_A);Wait(30);Off(OUT_A+OUT_B);UP;OnRev(OUT_B);Wait(22);Off(OUT_B); //九画目
 DOWN;yoko;OnRev(OUT_B);OnFwd(OUT_A);Wait(7);Off(OUT_A+OUT_B);UP;OnRev(OUT_B+OUT_A);Wait(7);Off(OUT_B+OUT_A); //十画目
 DOWN;tate;OnRev(OUT_B+OUT_A);Wait(7);Off(OUT_B+OUT_A);UP; //十一画目
 }

**感想 [#c8c983ec]
プログラムするときの予想より動きすぎたり、動かなさすぎたりして難しかった。 
同じプログラムでもその時によって出来上がりが違うので
自分が思っているよりいろいろな要因がかかわっていると思った。
もっと良いプログラムの仕方などがあったかもしれないのでもっと知識を増やしていきたいと思った


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS