A4の紙に漢字で2文字の地名を書く。
自分の出身県である三重にしました。
最初はペンの上げ下げに一個、タイヤの回転に二個モーターを取り付けていたがプログラミングが非常に複雑になり、また毎回同じように書くことが出来なかったため、x軸y軸にペンが動くロボットを作成することにしました。
X軸は細長いレゴブロックにギアの歯を合わせて左右に移動できるようにしました。 X軸Y軸に比べて稼働範囲が狭いため漢字の横書を書くことにしました。
y軸はロボットを前後に移動させました。 後ろに重心があったため、前に余分なタイヤをつけ重くしました。
もう一つのモーターを回転させてペンの上げ下げをしました。ペンの上げ下げのスピードを遅くするために一番小さなギアと一番大きなギアを絡ませました。ペンは下の写真にある二本の棒に輪ゴムで固定させました。しかしペンを上げ下げするときに余分ななせんが入り、それを無くすことが出来なかった。
初めにペンの上げ下げ、x軸である右と左、 y軸である前と後ろを定義しました。 文字の書き順は主にx軸を先にすべて書きその後y軸を書くことによりロボットの無駄な動きを無くしました。
X軸、Y軸、ペンの上げ下げの動きを定義しました。
#define WRITE_TIME 50 #define right(t) OnFwd(OUT_A);Wait(t);Off(OUT_A) //X軸右移動 #define left(t) OnRev(OUT_A);Wait(t);Off(OUT_A) //X軸左移動 #define go(t) OnFwd(OUT_B);Wait(t);Off(OUT_B) //Y軸前進 #define back(t) OnRev(OUT_B);Wait(t);Off(OUT_B) //Y軸後退 #define up OnFwd(OUT_C);Wait(WRITE_TIME);Off(OUT_C) //ペンを下ろす #define down OnRev(OUT_C);Wait(WRITE_TIME);Off(OUT_C) //ペンを上げる
「三」「重」の順に書くようにしました。 「三」は一般的な書き順、「重」は特殊な書き順で書きました。
task main() { down; right(80); //1画目 up; left(70); back(50); down; right(60); //2画目 up; left(70); back(50); down; right(80); //3画目 up; //「三」完成 left(50); back(50); down; right(20); //1画目 up; left(50); back(20); down; right(80); //2画目 up; left(60); back(20); down; back(40); //3画目 right(40); go(40); //4画目 left(40); //6画目 up; back(20); down; right(40); //5画目 up; left(50); back(40); down; right(60); //8画目 up; left(70); back(20); down; right(80); //9画目 up; left(40); down; go(120); //7画目 up; //「重」完成 }
ペンを上げ下げする際にできる無駄な線をできるだけなくそうと努力したが完全に無くすことはできなかった。しかし三重という字が識別できるように仕上げることができた。
初めはロボットを前後左右に動かすことにより、文字を書こうとしていたが、実際にプログラムを作成しロボットを動かすとなると、とても大変だということに気づき断念しました。その後xy軸にロボットが動くように作成することにより文字を書くことができた。今回一番工夫した点はロボットの頑丈さである。ギア、モーター、レゴのパーツに無駄な力がかからないようなロボットを作った。そうすることにより電池の減りを抑えること、また何回文字を書いても文字の形が変わらないようにすることができた。