詳しくは課題1を参照
大宇学生になり、自分で計画することが増えたので「計」という文字にした。
今回作ったロボットは、x軸、y軸でそれぞれ駆動するところを変えた。モーターは3つ使い、1つ目は機械を前後(x軸方向)に動かすため、2つ目はペンを横方向(y軸方向)に動かすため、3つ目はペンの上下に利用した。ロボット本体を必要最低限に動かすことで、電圧低下の影響を小さくした。
後輪は自動車(FR車)の駆動方法を参考にした。前輪は曲がらないように軸で繋いだ。速度調整がしやすいようにモーター側のギアを小さくし、後輪側のギアを大きくした。
細長いレゴブロックに歯のブロックを取り付け、y軸方向に動くようにした。アームが外れないようにストッパーを付けたりした。
初めはタイヤなどを使用して色々考えたが、結局、ペンを円運動させて上下に動くようにした。その結果、取り外しが簡単になったり、プログラムが簡単など結構利点があった。
正規の書き順とは違う書き順で書いている。
ロボットの前後の動きとアームの左右の動き、ペンの上下の動きを予め定義した。そのおかげで、メインプログラムが簡潔にできた。 tはそれぞれの稼働時間である。
#define down OnFwd(OUT_C); Wait(20); Off(OUT_C);//ペンを下げる #define up OnRev(OUT_C); Wait(20); Off(OUT_C);//ペンを上げる #define back(t) OnRev(OUT_A); Wait(t); Off(OUT_A);//本体を後進 #define go(t) OnFwd(OUT_A); Wait(t); Off(OUT_A);//本体を前進 #define right(t) OnRev(OUT_B); Wait(t); Off(OUT_B);//アームを左へ #define left(t) OnFwd(OUT_B); Wait(t); Off(OUT_B);//アームを右へ
次に文字について。すべての横線は見栄えをよくするために、左から右へと統一して書いた。計の「口」の部分は、プログラム簡潔化のために一画で書いた。また、二画目と三画目は同一直線上にして、無駄な動作を減らした。
task main () { right(5);//初期位置に着く down;//一画目 right(6); up; left(11); back(25); down;//二画目 right(16); up; right(5); down;//三画目 right(11); up; left(32); back(25); right(4); down;//四画目 right(7); up; left(11); back(25); right(4); down;//五画目 right(7); up; left(11); back(25); right(3); down;//六画目 right(12); back(22); left(12); go(22); up; go(100); right(25); down;//七画目 back(120); up; }
ペンを円運動させて上下に動かしたため、書き始めは濃くなり、書き終わりがかすれてしまった。しかし、個人的にはその影響で、なんとなく味が出たような気がした。
自分でロボットを組み立てて、プログラムを組んで動かすという初めての事だらけだったので貴重な経験を積むことが出来た。プログラム制作では、最初の方は全くわからず無駄なことばかり書いていたが、最後は定義などを使って簡略化できたのでよかった。定義の便利さが非常にわかった。ロボット製作では、はじめは、ロボットごと前後左右に動かそうとしたが、電圧低下の影響を受けて、文字が安定して書けなかったので、今回の形になった。その結果、電圧低下の影響をほとんど受けなくなったのでうれしかった。ペンの上下運動を改良すればもっと綺麗な文字が書けたかもしれないが、とりあえず文字が書けたのでよかった。