目次
#contents
*課題について [#h1c4d0f7]
A4の紙に松本の大学生活を表す漢字一文字を書くロボットを作る。
文字は15cm四方におさまる大きさ。
課題に囲まれてなかなか自由な時間が取れないから「囲」にした。
*ロボットについて [#mc2100ad]
ペンを極力本体に近づけられるよう邪魔な部品を少し外しただけで、本体ほぼそのまま使用した。
ペンを動かすところははシンプルにペン先を上げ下げするだけにして、壊れてもすぐ直せるようにした。ロボット本体を動かして文字を書いたので、正確に文字を書かせるためにあわせるのが大変だったが、なんとかきれいに書けるようになった。
#ref(./image2.jpg,50%,ロボット)
#ref(./image5.jpg,50%,アーム)
*プログラムについて [#j551fe12]
よく使用する90度回転するときの時間と、囲の周りの直線を書くときの時間と、速度、ペンの上げ下げを定義した。
#define TURN_TIME 2900
#define MOVE_TIME 2000
#define SPEED 20
#define UP OnFwd(OUT_A,SPEED); Wait(30);
#define DOWN OnRev(OUT_A,SPEED); Wait(30);
この順番で書いていった。
#ref(./文字1.jpg,50%,文字)
�� 一画目を書いたあと二画目の位置につくためにバックして90度右回転してまたバックする。
OnFwd(OUT_BC,SPEED);
Wait(MOVE_TIME);
UP
OnRev(OUT_BC,SPEED);
Wait(200);
OnFwd(OUT_C,SPEED);
Off(OUT_B);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1300);
DOWN
��二画目から三画目も同様。
OnFwd(OUT_BC,SPEED);
Wait(MOVE_TIME);
UP
OnRev(OUT_BC,SPEED);
Wait(200);
OnFwd(OUT_C,SPEED);
Off(OUT_B);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1300);
DOWN
��三画目から四画目も同様。
OnFwd(OUT_BC,SPEED);
Wait(MOVE_TIME);
UP
OnRev(OUT_BC,SPEED);
Wait(200);
OnFwd(OUT_C,SPEED);
Off(OUT_B);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1300);
DOWN
��
OnFwd(OUT_BC,SPEED);
Wait(MOVE_TIME);
UP
ここまでで「囲」の周りの□が終了。
ここから中の井を書く。少し前進してその場で90度回って後ろに下がって5画目の始まりの位置に合わせる。
OnFwd(OUT_BC,SPEED);
Wait(200);
OnRev(OUT_B,SPEED);
OnFwd(OUT_C,SPEED);
Wait(1400);
OnRev(OUT_BC,SPEED);
Wait(300);
DOWN
�ジ涓萍椶�ら六画目の位置につくために90度右回転して下がってからまた90度右回転して下がる。
OnFwd(OUT_BC,SPEED);
Wait(1600);
UP
OnFwd(OUT_C,SPEED);
Off(OUT_B);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1000);
OnFwd(OUT_C,SPEED);
Off(OUT_B);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1200);
DOWN
�ο参萍椶�ら七画目の位置に移動するために90度左回転して後ろに大きく下がる。
OnFwd(OUT_BC,SPEED);
Wait(1500);
UP
OnRev(OUT_BC,SPEED);
Wait(600);
OnFwd(OUT_B,SPEED);
Off(OUT_C);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(2300);
DOWN
�Ъ群萍椶�ら八画目の位置につくのに90度左回転して下がってまた90度左回転して下がる。
OnFwd(OUT_BC,SPEED);
Wait(1400);
UP
OnFwd(OUT_B,SPEED);
Off(OUT_C);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1200);
OnFwd(OUT_B,SPEED);
Off(OUT_C);
Wait(TURN_TIME);
OnRev(OUT_BC,SPEED);
Wait(1200);
DOWN
��
OnFwd(OUT_BC,SPEED);
Wait(1400);
UP
*結果 [#g2053363]
#ref(./image6.jpg,50%,文字完成)
筆ペンを使ってかくと紙にタイヤの跡がついてしまったので、普通の太めのペンを使ったらタイヤの跡がつかず、綺麗にかけるようになった。
すべて直線の漢字なのでxy座標で動かすロボットにしたほうがやりやすかった気がする。