A4の紙に大学生活を表す漢字一文字をロボットで書く。 一人暮らしで伸び伸び生活しているということで「伸」という漢字を書く。
ペンをもたせた車型のロボットを走らせ、字を書くことにした。
シンプルに作った。前輪は摩擦の小さいものを選び、小回りがきくようにした。
モーターでタイヤを回し、ペンを上げ下げする。何度も上げ下げを繰り返すと、ペンがずれるという問題を克服するためにゴムや、ブロックでペンの動きを制限した。
#define turn_right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_AC) //右を向く #define turn_left(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_AC) //左を向く #define go_go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC) //前に進む #define UP_DOWN_TIME 10 #define back_back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC) //後ろに進む #define up_pen OnFwd(OUT_B);Wait(UP_DOWN_TIME);Off(OUT_B) //ペンをあげる #define down_pen OnRev(OUT_B);Wait(UP_DOWN_TIME);Off(OUT_B) //ペンをさげる
直線を引くサブルーチン
void write(int t) { down_pen; go_go(t); up_pen; }
漢字を書く
task main() { write(50); //一画目 back_back(50); turn_left(40); go_go(40); write(70); //二画目 にんべん完成 back_back(70); turn_left(75); go_go(60); write(40); //真ん中の横線 back_back(40); turn_right(75); go_go(10); write(40); //右の縦線 back_back(40); turn_right(80); go_go(30); write(40); //下の横線 back_back(35); turn_right(75); go_go(30); write(40); //左の縦線 back_back(35); turn_right(90); go_go(30); write(40); //上の横線 turn_left(75); go_go(10); turn_left(80); go_go(60); turn_left(90); go_go(30); write(90); //真ん中の縦線 }
完成した「伸」がこちら
タイヤの軸上にペン先がないので曲がった時に思っていた場所にペン先が来なかったので、書く前に機体の位置を調整するのが難しかった。ペンを上げ下げする部分はペンがずれる問題を解決するのは時間がかかったが、工夫して良いものができたと思う。