「足」可動式だったものを、タイヤに変更しより安定性を持たせました。さらに、ペンの上げ下げにギアとゴム動力を利用することによって、驚くほど機敏な筆運び(上げたり下げたりするだけですが)が可能になりました。
この棒が、モーターで回転させられることによって、(この画像では左側にある)ギアが動き、黄色いワームが上下してペンを動かします。単純ですが、とても効率的な動きをしてくれました。
一番↑ の画像をみれば分かるように、このロボットはペンを(正面から見ると)左側に持っています。そのため、線を曲げたいときは、線の書き始めが、どこになるかをいちいち計算してプログラムしなければなりませんでした。そのため、画数の多い文字になればなるほど、プログラムが長く複雑になってしまいました。
長所は、ともかく動きが機敏なこと。安定した直線が引けることです・
短所は、機敏すぎること。線の書き始めを設定するのが難し過ぎる事、そのためプログラムが長すぎる事です。
ともかく、サブルーチンやディファイン(define)を用いて、できる限りプログラムが短くなるように努力しました。
#define pen_down Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(20); #define pen_up Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(20) #define LFwd OnFwd(OUT_A) #define LRev OnRev(OUT_A) #define LOff Off(OUT_A) #define RFwd OnFwd(OUT_C) #define RRev OnRev(OUT_C) #define ROff Off(OUT_C) task main() { // 1 pen_down; LFwd; RFwd;Wait(100); pen_up; LFwd; RFwd;Wait(30); LRev;ROff;Wait(195);/*turn1*/ LFwd; RFwd;Wait(20); // 2 pen_down; LRev; RRev;Wait(100); pen_up; LFwd; RFwd;Wait(90); LRev; ROff;Wait(200); LOff;LFwd; RFwd;Wait(40); // 3 pen_down; LRev; RRev;Wait(150); pen_up; LFwd; RFwd;Wait(215); RRev;Wait(45);/*turn3*/ LRev; RRev;Wait(50); //4 pen_down; LRev; RRev; Wait(25); pen_up; LFwd; RFwd; Wait(75); RFwd; Wait(45); LRev; Wait(45); LRev; RRev; Wait(200);/*back*/ RFwd;Wait(20); LRev;Wait(20);/*turn4*/ LRev;RRev;Wait(10); //5 pen_down; LFwd; RFwd;Wait(35); pen_up; LFwd; RFwd; Wait(80); RRev;Wait(50); LFwd;RFwd;Wait(0); //6 pen_down; LRev; RRev;Wait(100); LOff; ROff; pen_up; LFwd; RFwd;Wait(50); LRev; RFwd; Wait(30); LFwd;RFwd;Wait(50); LFwd;RRev;Wait(20); //7 pen_down; LRev; RRev;Wait(80); pen_up; LFwd; RFwd; Wait(100); LFwd; RRev; Wait(100); //8 pen_down; LRev; RRev; Wait(120); pen_up; Off(OUT_A+ OUT_B+OUT_C); }
長い、長過ぎる……。プログラムを組んでいるうちに、自分でも訳が分からなくなりそうでした。いちを、それを防ぐために「//*(このプログラムで実行されること)*//」などを後ろにつける等の工夫をしたのですが、効果のほどはイマイチ……。
ギア回転の時間を、その場の直感で設定するのではなく、ある程度ルールを決めて設定するべきだったと思いました。文字を書くという事を意識し過ぎたために、分かりやすいプログラムを書くという基本的な事が出来なかったようです。文字を書いている最中にギアの停止を全く挟まなかった事も、書くたびに誤差が生まれる原因となってしまいました。一画書き終わるごとにギアを停止させるなどの工夫をするべきだったと反省しています。また、ロボット設計段階を振り返って、ペンをなるべくロボットの重心に近い位置に来るように設計しておけば、回転にするたびにペンの位置が大きくずれてしまう事を防げたのに、と思いました。今回の課題は、自分としてはあまり満足のいくものが作れませんでしたが、それだけに学んだ事も多かったと思います。この反省を、次回に活かして、今度こそ自分で納得のいくものを作りたいです。