目次
今回の課題は、お絵かきロボットを作成し、自分の似顔絵をロボットに描かせることである。
課題に取り組む際の注意点
・マクロや関数等を使い、main関数がなるべく単純になるようにプログラムを組む
・定数名やマクロなどは分かりやすい名前を用いる
・似顔絵が余裕をもってA4の紙に収まるようにする
・ペン以外はキットの部品を使う
写真のように本体の前方にモーターを取り付け、そこから伸びるアームに輪ゴムでペンを固定した。
モーターでアームを上下させることで、同時にペンも上下する仕組み。
ペンを下げた状態からスタート
#define pen_up OnRev(OUT_C,10);Wait(500);Off(OUT_C) #define pen_down OnFwd(OUT_C,10);Wait(500);Off(OUT_C) task main () { repeat(6) { //輪郭(六角形) OnFwd(OUT_AB,25); Wait(1200); Off(OUT_AB); pen_up; //ペンを上げて前進 OnFwd(OUT_AB,25); Wait(800); Off(OUT_AB); OnFwd(OUT_B,25);//60°旋回 Wait(1917); Off(OUT_B); OnRev(OUT_AB,25);//少し後退 Wait(2000); Off(OUT_AB); pen_down; } pen_up; OnFwd(OUT_B,25); Wait(4000); Off(OUT_B); pen_down; //前髪 OnFwd(OUT_BC,25); Wait(2500); Off(OUT_BC); pen_up; OnFwd(OUT_A,25);//180°旋回 Wait(6000); Off(OUT_C); OnRev(OUT_BC,25);//少し後退 Wait(500); Off(OUT_BC); pen_down; //左目 OnFwd(OUT_BC,25); Wait(500); Off(OUT_BC); pen_up; OnFwd(OUT_BC,25); Wait(500); Off(OUT_BC); pen_down; //右目 OnFwd(OUT_BC,25); Wait(500); Off(OUT_BC); pen_up; OnFwd(OUT_B,25);//180°旋回 Wait(6000); Off(OUT_B); pen_down; //口 OnFwd(OUT_BC,25); Wait(700); Off(OUT_BC); }
ロボットに六角形を描かせる際に、直線を描く→回転するを繰り返すだけでは歪な図形にしかならなかったから、
写真(暗くて申し訳ない)のように長さを測って、バックしたりペンを上げて前進させる時間を調節するのにかなり苦労した。
今回の課題は、ロボットの製作に時間をかけすぎたためプログラミングにあまり時間を割けなかったのが、反省すべき点だと思う。
次回の課題からさらに難易度が上がるから、時間配分に気を付けていきたい。