「長」、「京」の2文字を、タンクロボットに書かせる。(課題の発表のあとで気づいたのですが、土台も改造すればよかったんですね・・・。)
(製作者:座敷童、ネタ切れ)
最初の形では、とりあえずペンがつけばいいのかな?ということで、前にペンをつけてみました。が、ロボの回転の中心からペン先がずれ、曲ったあとのペン位置の修正が非常に大変!!
↓↓↓
思い切って大改造! ペンを本体の中央あたりで上下するようにしたら、曲ったあともペン先の位置は変わらないのではないだろうか? →とりあえず、回転の軸には近づいたけれど、若干ずれる…。
(▲後ろから見た写真です。ペンを上下させる部分です。)
(▲上と下から見た写真です。ペンが本体の中央あたりにあるのがわかると思います。)
最初の形ほどにずれがひどくはないので、ペン先の位置を修正しつつ動かすプログラム の作成にとりかかることになりました。
ペンは下がった状態から開始します。
#define MOTOR OUT_A+OUT_C #define TURN_TIME 15 //曲がったあとの修正にかかる時間をTURN_TIMEとおく。 sub arm_up(){ OnFwd(OUT_B); Wait(5); Off(OUT_B); } sub arm_down(){ OnRev(OUT_B); Wait(5); Off(OUT_B); } task main() { OnFwd(MOTOR); Wait(50); //0.5秒前進 arm_up(); OnRev(MOTOR); Wait(TURN_TIME); //TURN_TIMEの分を戻って…。 OnFwd(OUT_C); Wait(160); //方向をかえて…。 OnFwd(MOTOR); Wait(TURN_TIME); //TURN_TIMEの分を進む。 arm_down(); OnFwd(MOTOR); Wait(50); //直進 Off(MOTOR); }これで(ほぼ)角でペン先のずれが解消されます!
#define MOTOR OUT_A+OUT_C // #define TURN_TIME 15 //
sub turn_left() //角でのペン位置を調整しつつ左折 { OnRev(MOTOR); Wait(TURN_TIME); OnFwd(OUT_A); Wait(162); OnFwd(OUT_C); Wait(TURN_TIME); Off(MOTOR); }
sub turn_right() //角でのペン位置を調整しつつ右折 { OnRev(MOTOR); Wait(TURN_TIME); OnFwd(OUT_C); Wait(165); OnFwd(OUT_A); Wait(TURN_TIME); Off(MOTOR); }
sub arm_up() //ペンを紙から離す { Off(MOTOR); OnFwd(OUT_B); Wait(6); Off(OUT_B); }
sub arm_down() //ペンを紙に下ろす { Off(MOTOR); OnRev(OUT_B); Wait(8); Off(OUT_B); }
task main() { OnFwd(MOTOR); Wait(50); //1〜2を書く arm_up(); OnRev(MOTOR); Wait(52); //2〜1を移動 turn_right(); arm_down(); OnFwd(MOTOR); Wait(55); //1〜3を書く arm_up(); OnRev(MOTOR); Wait(40); //3〜4を移動 turn_left(); arm_down(); OnFwd(MOTOR); Wait(40); //4〜5を書く arm_up(); OnRev(MOTOR); Wait(40); //5〜4を移動 turn_right(); OnFwd(MOTOR); Wait(18); //4〜6を移動 turn_left(); arm_down(); OnFwd(MOTOR); Wait(38); //6〜7を書く arm_up(); OnRev(MOTOR); Wait(38); //7〜6を移動 turn_right(); OnFwd(MOTOR); Wait(18); //6〜3を移動 turn_right(); OnFwd(MOTOR); Wait(45); //3〜8を移動 arm_down(); OnRev(MOTOR); Wait(100); //8〜9を書く arm_up(); OnFwd(MOTOR); Wait(75); //9〜3を移動 turn_left(); arm_down(); OnFwd(MOTOR); Wait(25); //3〜10を書く arm_up(); OnRev(MOTOR); Wait(TURN_TIME); OnFwd(OUT_A); Wait(75); OnFwd(OUT_C); Wait(TURN_TIME); Wait(20); //10〜11を移動 Off(MOTOR); arm_down(); OnRev(MOTOR); Wait(41); //11〜12を書く arm_up(); OnRev(MOTOR); Wait(25); //12〜13を移動 arm_down(); OnFwd(MOTOR); Wait(20); //13〜14を書く arm_up(); turn_right(); OnFwd(MOTOR); Wait(20); //14〜15を移動 arm_down(); OnRev(MOTOR); Wait(65); //15〜16を書く arm_up(); Off(MOTOR); }
#define MOTOR OUT_A+OUT_C // #define TURN_TIME 15 //
sub turn_left() //角でのペン位置を調整しつつ左折 { OnRev(MOTOR); Wait(TURN_TIME); OnFwd(OUT_A); Wait(165); OnFwd(OUT_C); Wait(TURN_TIME); Off(MOTOR); }
sub turn_right() //角でのペン位置を調整しつつ右折 { OnRev(MOTOR); Wait(TURN_TIME); OnFwd(OUT_C); Wait(162); OnFwd(OUT_A); Wait(TURN_TIME); Off(MOTOR); }
sub arm_up() //ペンを紙から離す { Off(MOTOR); OnFwd(OUT_B); Wait(6); Off(OUT_B); }
sub arm_down() //ペンを紙に下ろす { Off(MOTOR); OnRev(OUT_B); Wait(8); Off(OUT_B); }
task main() { OnFwd(MOTOR); Wait(30); //1〜2を書く arm_up(); turn_right(); OnFwd(MOTOR); Wait(50); //2〜3を移動 arm_down(); OnRev(MOTOR); Wait(100); //3〜4を書く arm_up(); OnFwd(MOTOR); Wait(90); turn_left(); OnFwd(MOTOR); Wait(20); //4〜5を移動 arm_down(); OnFwd(MOTOR); Wait(40); //5〜6を書く arm_up(); OnRev(MOTOR); Wait(40); //6〜5を移動 turn_left(); arm_down(); OnFwd(MOTOR); Wait(100); //5〜7を書く arm_up(); turn_right(); arm_down(); OnFwd(MOTOR); Wait(40); //7〜8を書く arm_up(); turn_right(); OnFwd(MOTOR); Wait(100); //8〜6を移動 arm_down(); OnRev(MOTOR); Wait(100); //6〜8を書く arm_up(); OnFwd(MOTOR); Wait(50); //8〜9を移動 turn_left(); arm_down(); OnFwd(MOTOR); Wait(80); //9〜10を書く arm_up(); OnRev(MOTOR); Wait(80); OnRev(MOTOR); Wait(TURN_TIME); OnFwd(OUT_C); OnRev(OUT_A); Wait(70); OnFwd(MOTOR); Wait(30+TURN_TIME); //10〜11を移動 arm_down(); OnFwd(MOTOR); Wait(70); //11〜12を書く arm_up(); OnRev(MOTOR); Wait(100+TURN_TIME); //12〜9を移動 OnRev(OUT_C); OnFwd(OUT_A); Wait(140); OnFwd(MOTOR); Wait(30+TURN_TIME); //9〜13を移動 arm_down(); OnFwd(MOTOR); Wait(70); //13〜14を書く Off(MOTOR); }
(▲「長」の結果です。)
(▲「京」の結果です。)
・曲がり角などでペン先の位置がずれてしまう。
→本体の中央あたりにペンを持ってきて、そこの場所で上下させることである程度ずれが解消されました。
・ペンの位置を中央にもってくることによって、左右のバランスが崩れてしまい、左折右折で数値がかわってくる。
→左折、右折の場合でそれぞれ数値を出してそれぞれ調整。
・ペンと回転の軸を近づけるために、機械本体を立てることにしました。
→固定に苦労しました・・・。なんとか固定。(下の写真が努力の結晶(?))
・A4の紙にそれぞれの文字をおさめる。
→文字がゆがんでしまうと、はみでてしまうので、多少のずれも考慮したサイズに変更しました。