ベースはそのまま使用し、前方にモータを取り付けてペンを上下させて紙に描くという構造にしました。
大きく分けて三つの部品に解体できるようにしました。
ペンが紙にあたっても余計な力が掛からないように空回りするようにしました。
ブロック部分が横ではなく縦方向なので、間に細いブロックを挟むことで違うペンを挟むことができるようにしました。
約10cmの秒数
#define MOVE_TIME 85
ペンを降ろす秒数
#define W_TIME 10
右回転
void R_turn(int R) { OnFwd(OUT_A); OnRev(OUT_C); Wait(R); Off(OUT_AC); }
左回転
void L_turn(int L) { OnFwd(OUT_C); OnRev(OUT_A); Wait(L); Off(OUT_AC); }
前進
void go(int M) { OnFwd(OUT_A); OnFwd(OUT_C); Wait(M*(MOVE_TIME/10)); Off(OUT_AC); }
後進
void back(int M) { OnRev(OUT_A); OnRev(OUT_C); Wait(M*(MOVE_TIME/10)); Off(OUT_AC); }
ペンを降ろしながら前進
void w_go(int M) { OnFwd(OUT_B); Wait(W_TIME); Off(OUT_B); OnFwd(OUT_A); OnFwd(OUT_C); Wait(M*(MOVE_TIME/10)); Off(OUT_AC); OnRev(OUT_B); Wait(W_TIME); Off(OUT_B); }
ペンを降ろしながら後進
void w_back(int M) { OnFwd(OUT_B); Wait(W_TIME); Off(OUT_B); OnRev(OUT_A); OnRev(OUT_C); Wait(M*(MOVE_TIME/10)); Off(OUT_AC); OnRev(OUT_B); Wait(W_TIME); Off(OUT_B); }
task main () { w_go(10); //輪郭 go(10); L_turn(120); back(12); w_go(15); go(10); L_turn(49); back(12); w_go(6); go(10); L_turn(60); back(12); w_go(6); go(10); L_turn(49); back(12); w_go(6); go(10); L_turn(50); back(12); w_go(15); go(6); L_turn(135); //髪 back(11); w_go(12); back(12); R_turn(135); //目 back(2); L_turn(125); go(2); w_go(3); go(2); w_go(3); back(12); R_turn(125); //口 back(3); L_turn(125); go(7); w_go(3); back(15); }
引数を10とする。
w_go(10);
変数"M"で受け取る。
void w_go(int M) { OnFwd(OUT_B); Wait(W_TIME); Off(OUT_B); OnFwd(OUT_A); OnFwd(OUT_C); Wait(M*(MOVE_TIME/10)); Off(OUT_AC); OnRev(OUT_B); Wait(W_TIME); Off(OUT_B); }
↓
void w_go(int 10) { OnFwd(OUT_B); Wait(W_TIME); Off(OUT_B); OnFwd(OUT_A); OnFwd(OUT_C); Wait(10*(MOVE_TIME/10)); Off(OUT_AC); OnRev(OUT_B); Wait(W_TIME); Off(OUT_B); }
約10cmの線を描くことができる。
鉛筆で書いたため薄くなってしまった。
電池の残量があと少しだった事に気づかず、最後の方は毎回数値を変えなくてはいけなかった。次回からは電池の確認をしっかりと行いたいです。