・A3用紙に相棒の似顔絵を書くロボットの製作
・前進後進が可能
・左右に方向転換、及びその場での回転が可能
・ペンを装着し固定できる
・モーターによってペンを上げ下げできる
・ペンと紙との摩擦でペンがずれない
・動作中に分解しない耐久性がある
以上の点を満たすロボットを制作した
#define up OnRev(OUT_B);Wait(10);Off(OUT_B); //「up」でペンを上げる #define down OnFwd(OUT_B);Wait(40);Off(OUT_B); //「down」でペンを下げる #define matu Off(OUT_A+OUT_C);Wait(50); //「matu」で0.5秒間モーターA,Bの動作停止 void go(int t) { OnFwd(OUT_C+OUT_A);Wait(t); //「go(秒数)」で秒数分だけ前進 } void back(int t) { OnRev(OUT_C+OUT_A);Wait(t); //「back(秒数)」で秒数分だけ後進 } void right(int t) { OnFwd(OUT_A);OnRev(OUT_C);Wait(t); //「right(秒数)」で秒数分だけ右回りに回転 } void left(int t) { OnFwd(OUT_C);OnRev(OUT_A);Wait(t); //「left(秒数)」で秒数分だけ左回りに回転 } task main() { left(40) //左の眉毛を書く matu down right(80) matu up matu right(40) matu go(90) //右の眉毛に移動 matu left(90) matu left(40) //右の眉毛を書く matu down right(80) matu up matu right(40) //右目に移動 matu back(30) matu down matu back(40) //右目を書く matu up right(190) //180度回転と同時に左目の移動 matu down //左目を書く matu back(40) matu go;(20) //顔の中心に移動 matu up matu left(90) //左に90度回転 matu down //鼻を書く go(30) up matu go(50) //口に移動 matu left(40) //口を書く matu down matu right(80) matu Off(OUT_A+OUT_B+OUT_C); //停止 }
1:ペンを下げるときに出しすぎてしまい車体が浮いてしまう
2:できる限り小さな円を描こうとした結果ロボットの重心が後方にずれてしまい急発進する際に後ろに浮き上がることがあった
3:プログラムを書く際にOnFwd(OUT_A+OUT_C);Wait(300);・・・のように前進させるだけでも長い文を書かなければならず手間がかかるうえに解りずらい
4:ペンが紙から離れる前に次の動作が動き出し紙に不要な線ができる
1:ペンの構造を利用してブロックである一定以上にペンが出すぎるのを防いだ
2:ロボットの後ろにストッパーをつけて浮き上がってもすぐに戻るようにした
3:最初に前進、後進、方向転換を「go(300)」「back(300)」のように定義することで書きやすく分かりやすいプログラムを書いた
4:ひとつの動作が終わるごとにすべてのタイヤのモーターを止めることで不要な線が書かれるのを防いだ
良かった点
�「課題を行うために必要な機能」や問題の着眼点が優れています。
�サブルーチンやストッパー等随所に工夫見られます。
改善できる点
�文だけではわかりにくいので、図や写真を用いるといいと思います。どんなロボットかわかりません。
�プログラムは2人分載せましょう。
I