ペンを上げ下げする部分にモーターを一つ、紙面上を動き回るための車体部分にモーターを二つ使ってペンの上げ下げ部分と移動部分に分け、それを組み合わせてロボットを組み立てた。
しかし、走らせてみると後輪が取れてしまう、ペンを下げた時にペンの位置がぶれてしまうという2つの問題点が出た。そこで後輪部分の芯を長いものに変えてみた。車体が安定し、後輪は外れなくなった。ペンのぶれを防ぐために、ペン部分に支えをつけることで衝撃を抑え、ペン位置を安定させた。
ペンを挟むところはセロテープと輪ゴムを使い、安定感を出した。
ペンの上げ下げはモーターに直につないでいるため、プログラムで工夫が必要だった。上げるときは回転を強めにし、ペンが走行中に落ちるのを防いだ。また、下げるときは弱めにし、ペンがゆっくりと落としてペン先のブレぶれを防いだ。
以下のように定義し、「小出」のプログラムを効率よく書いた。
#define turn_L OnFwd(OUT_A);OnRev(OUT_C);Wait(88);Off(OUT_AC);Wait(50);//90°左回転 #define turn_R OnFwd(OUT_C);OnRev(OUT_A);Wait(95);Off(OUT_AC);Wait(50);//90°右回転 #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC);Wait(50);//前進 #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC);Wait(50);//後退 #define up OnFwd(OUT_B);Wait(10);Off(OUT_B);Wait(50);//ペンを上げる #define down OnRev(OUT_B);Wait(7);Off(OUT_B);Wait(50);//ぺんを下げる
task main () { go(37);//1画目(左側縦線) up;//ペンを上げる go(200);//位置調整の前進 turn_L;//90°左回転 turn_L;//90°左回転 back(30);//位置調整の後退 down;//ペンを下げる go(90);//2画目(中央縦線) up;//ペンを上げる go(210);//位置調整の前進 turn_R;//90°右回転 go(60);//位置調整の前進 turn_R;//90°右回転 go(25);//位置調整の前進 down;//ペンを下げる go(37);//3画目(右縦線) up;//ペンを上げる }
task main () { go(30);//位置合わせ(小からのつなぎ部分) down;//ペンを下げる go(30);//右上部分を書く(1) up;//ペンを上げる go(20);//位置調整の前進 down;//ペンを下げる go(30);//右下部分を書く(2) up;//ペンを上げる go(120);//位置調整の前進 turn_R;//90°右回転 back(90);//位置調整の後退 down;//ペンを下げる go(80);//下横線部分を書く(3) up;//ペンを上げる go(110);//位置調整の前進 turn_R;//90°右回転 back(95);//位置調整の後退 down;//ペンを下げる go(30);//左下部分を書く(4) up;//ペンを上げる go(20);//位置調整の前進 down;//ペンを下げる go(30);//左上部分を書く(5) up;//ペンを上げる go(90);//位置調整の前進 turn_R;//90°右回転 back(90);//位置調整の後退 down;//ペンを下げる go(80);//上横線部分を書く(6) up;//ペンを上げる go(70);//位置調整の前進 turn_R;//90°右回転 back(140);//位置調整の後退 down;//ペンを下げる go(90);//中央縦線部分を書く(7) }
「出」の最後の縦線が少し上に来てしまったが、しっかりと「小出」の二文字を書くことができた。
電池の残量やモーターとのかみ合い方などにより、回転角度が不安定でプログラムの調整にてこずった。それに加えて、機体が動くのに合わせてペン先の位置も合わせなければならなかったので、そこの計算にとても苦労した。本番ギリギリまで調整し、納得のいく結果が出てよかった。