目次
A4用紙に「歩」の文字を書く
今回使用したロボットは、初めに作成したロボットにペンを上げ下げさせるためのアームを取り付けた単純な作りになっている。
腕の上げ下げの際に調整がしやすいように、そして、勢いでペンがずれてしまわないように歯数20のギアと歯数40のギアを組み合わせた。 このようにすることで直接モーターに腕をつなげるよりもゆっくりと腕が動くようになる。 また、ペンを固定する際に下の写真ではペンを挟むように固定しているだけだが、実際にはこれだけではペンが横方向にずれてしまうので横にずれてしまわないように輪ゴムで軽く固定した。
#define go_foward(t) OnFwd(OUT_BC,25); Wait(t); Off(OUT_BC); //t秒間前進する #define go_back(t) OnRev(OUT_BC,25); Wait(t); Off(OUT_BC); //t秒間後退する #define turn_left(t) OnFwd(OUT_B,25); OnRev(OUT_C,25); Wait(t);Off(OUT_BC); //t秒間左旋回する #define turn_right(t) OnFwd(OUT_C,25); OnRev(OUT_B,25); Wait(t);Off(OUT_BC); //t秒間右旋回する #define pen_up OnFwd(OUT_A,25); Wait(100); Off(OUT_A); //ペンを上げる #define pen_down OnRev(OUT_A,25); Wait(100); Off(OUT_A); //ペンを下げる #define hidari_harai(t) OnFwd(OUT_C,40); OnFwd(OUT_B,36) Wait(t); Off(OUT_BC); //左はらいを書く #define migi_harai(t) OnFwd(OUT_B,40); OnFwd(OUT_C,36) Wait(t); Off(OUT_BC); //右はらいを書く task_main() { pen_down; go_foward(700); pen_up; //一画目の動作 go_foward(1750); turn_right(1150); pen_down; go_back(1000); pen_up; //二画目の動作 turn_left(1150); go_foward(400); turn_right(1150); go_foward(500); pen_down; go_back(500); pen_up; //三画目の動作 go_foward(1750); turn_left(1150); go_back(1150); pen_down; go_back(2000); pen_up; //四画目の動作 go_foward(1000); turn_right(1150); go_back(1750); pen_down; go_back(700); pen_up; turn_left(575); go_back(1750); pen_down; go_foward(200); pen_up; //五画目の動作 go_foward(400); turn_left(1150); go_back(1650); pen_down; hidari_harai(300); pen_up; //六画目の動作 turn_right(2300); go_foward(300); turn_right(575); go_foward(500); turn_right(575); go_back(1750); pen_down; migi_harai(300); pen_up; //七画目の動作 turn_right(900); go_back(1500); pen_down; migi_harai(1300); pen_up; //八画目の動作 }
このプログラムでは、はねとはらいを表現できるように工夫した
今回使用した機体は非常に簡単に作ることができるが、ペンが車輪の軸の中心点に無かったために、特に六画目の終わりから七画目の初めの位置に移動する部分のプログラムの数値調整が難しく時間がかかってしまった。また、床の材質などによって機体の挙動が変化してしまうという問題が残されている。次の機体製作ではプログラムを簡潔に書くために機体の形状を工夫し、床などの条件によって挙動が左右されないような機体にしたい。