「里」という字を書くロボットを制作した。
ロボットによって書かれた字は下の写真
モーターを3つ搭載しておりそれぞれのモーターに縦方向、横方向、アーム(ペン)の上げ下げについての役割を割り当てた。そのため縦方向と横方向が独立しているので制御がやりやすくなった。マイコンは可動部分に置かず地面においた。縦方向にはタイヤで移動する。横方向には台車の上に設置した横移動用の機構(平面型のギアを台車に固定しアーム自体を移動するようにしたもの)を載せた。アームはモーターに直接つけるとペンの重さで滑ってしまうのでギアボックスを制作してトルクを大きくした。
サブルーチンを用いてプログラムを制作した。right()、left()は横方向に1単位量移動するプログラム、up()、down()は縦方向に単位量移動するプログラム、armup()、armdown()はアームを上げ下げするプログラムである。right()、left()、up()、down()を連続して書けば2倍、3倍の移動量にすることができる。repeat関数を用いてサブルーチン1つを繰り返すよりは、サブルーチンを2つ、3つ書いたほうがわかりやすいと感じたのでrepeat関数は使わなかった。アームを上げる前、アームを下げたあとは少し停止時間を入れて安定させた。
プログラムは以下
sub armup(){ //アームを上げる Off(OUT_ABC); Wait(50); OnFwd(OUT_B); Wait(10); Off(OUT_B); } sub armdown(){ //アームを下げる OnRev(OUT_B); Wait(10); Off(OUT_B); Wait(50); } sub left(){ //左へ移動 OnRev(OUT_A); Wait(10); Off(OUT_A); } sub right(){ //右に移動 OnFwd(OUT_A); Wait(10); Off(OUT_A); } sub up(){ //上に移動 OnFwd(OUT_C); Wait(10); Off(OUT_C); } sub down(){ //下に移動 OnRev(OUT_C); Wait(10); Off(OUT_C); } task main(){ armdown(); //四角 down(); down(); right(); right(); up(); up(); left(); left(); armup(); //四角終わり down(); armdown(); //横1 right(); right(); armup(); //横1終わり up(); left(); armdown(); //縦 down(); down(); down(); down(); armup(); //縦終わり up(); left(); armdown(); //横2 right(); right(); armup(); //横2終わり down(); right(); armdown(); //横3 left(); left(); left(); left(); armup(); //おしまい }