目次
A4サイズの用紙に2文字以上の自分の住んでいる地域の名前を書く。
長野県上田市に住んでいたので、単純な形の「上田」を選んだ。
3つのモーターをそれぞれ、y軸移動のためのタイヤ(小)部分(モーターC)、x軸移動のためのギア部分(モーターA)、ペンを上下させるためのギア部分(モーターB)に使った。
基本的な構造として、下部のx軸移動部分と上部のペン上下部分を連結させ、一体となって動くようにした。また、ペンの上げ下げを垂直に行えるように工夫した。
ギアの配置を工夫し、モーター1つで左右のタイヤを均等に動かせるようにした。
じゃばら状のチューブを、歯が側面に飛び出たギアで挟むことでうまく動かせることが分かった。
しかし、上下を連結させているなどの理由で、可動域がチューブの長さ程度になってしまい、字の大きさが小さくなってしまった。
上から突き出た棒を回すことで黄色いパーツが上下に動くようにした。その棒を二枚目の写真のモーター部分と繋ぎ、上下させた。
ロボットをx軸とy軸に沿って動かすものにし、縦移動や横移動などの基本的な動きだけで十分対応できるようにしたので、その動きをあらかじめ定義した。そうすることで、プログラムを書きやすくした。また、ロボットの性質上横移動に限界があったため、限界値に達するまでの時間を地道に調べ、半分の長さを書くことが出来るようした。
#define PEN_UP OnFwd(OUT_B);Wait(8);Off(OUT_B);//ペンを上げる #define PEN_DOWN OnRev(OUT_B);Wait(8);Off(OUT_B);//ペンを下げる #define SIDE_MAX_FWD OnFwd(OUT_A);Wait(15);Off(OUT_A);//横に最大限伸ばす #define SIDE_MAX_REV OnRev(OUT_A);Wait(15);Off(OUT_A);//横に最大限戻す #define SIDE_HALF_FWD OnFwd(OUT_A);Wait(7);Off(OUT_A);//横に半分伸ばす #define SIDE_HALF_REV OnRev(OUT_A);Wait(7);Off(OUT_A);//横に半分戻す #define LENGTH_MAX_FWD OnFwd(OUT_C);Wait(60);Off(OUT_C);//縦に最大限進む #define LENGTH_MAX_REV OnRev(OUT_C);Wait(60);Off(OUT_C);//縦に最大限戻る #define LENGTH_HALF_FWD OnFwd(OUT_C);Wait(30);Off(OUT_C);//縦に半分進む #define LENGTH_HALF_REV OnRev(OUT_C);Wait(30);Off(OUT_C);//縦に半分戻る
task main() { SIDE_HALF_FWD;//「上」の縦棒 PEN_DOWN; LENGTH_MAX_FWD; PEN_UP; LENGTH_HALF_REV;//「上」の上の横棒 PEN_DOWN; SIDE_HALF_FWD; PEN_UP; SIDE_MAX_REV;//「上」の下の横棒 LENGTH_HALF_FWD; PEN_DOWN; SIDE_MAX_FWD; PEN_UP; SIDE_MAX_REV;//初期位置に戻す LENGTH_HALF_FWD;//字間を空ける
PEN_DOWN;//「田」の口部分 SIDE_MAX_FWD; LENGTH_MAX_FWD; SIDE_MAX_REV; LENGTH_MAX_REV; PEN_UP; SIDE_HALF_FWD;//「田」の十の縦棒 PEN_DOWN; LENGTH_MAX_FWD; PEN_UP; SIDE_HALF_REV;//「田」の十の横棒 LENGTH_HALF_REV; PEN_DOWN; SIDE_MAX_FWD; PEN_UP; SIDE_MAX_REV;//初期位置に戻す }
読める字を書くことが出来た。
ロボットのペン固定部は宙に浮き周りとの固定も出来なかったので、揺れが大きくロボットの動かし方によっては、まっすぐな線を引けないということがあった。また、A4サイズの紙に対して字が小さすぎるので、可動域を改善できればよかった。
A4サイズの紙に対してこのような字のサイズになってしまった。
ロボットをx軸y軸移動のものにしたので、ロボット製作に時間はかかったが、プログラミングにはあまり時間がかかることはなくスムーズに進んだのでよかった。慣れない作業が多かったが、楽しくできた。