†マクロや関数、サブルーチンなどを使い、main関数がなるべく単純になるようにプログラムを作ること。定数名やマクロなどは分かりやすい名前を用いること余裕をもってA4の紙の中に収まる大きさにすること。ペン以外はキットの部品を使うこと輪ゴムは切れやすく高価なので慎重に扱い、張力がかかりすぎないようにすること。†コードが長いものを使うしかなかったので、タイヤに巻き込まれないようにまとめた。ペンがずれないように支えもつけた。モーターが動くとタイヤも連動して動くようにした。この装置は少し挟む力が弱く、長い時間タイヤを動かすとペンをつかまなくなってしまうので調整が難しかった。輪ゴムは一本だと弱い上に負荷をかけすぎると切れそうだったので二本使用した。写真には取り忘れたが分解・組み立てもしやすいように作られている。今回は下図のような絵を書くようにプログラミングした。定義それぞれについて解説する。111ロボット本体を直角に旋回させるために定義した数値だが、床の滑り具合や電池の残量によって変化したので毎回数値を変える必要があった。OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_AC);ロボット本体を時計回りに直角に回転させる。OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_AC);ロボット本体を反時計回りに直角に回転させる。OnFwd(OUT_AC);Wait(t);Off(OUT_AC);ロボット本体をt秒間前進させる。OnRev(OUT_B);Wait(20);Off(OUT_B);ペンを上げる。OnFwd(OUT_B);Wait(20);Off(OUT_B);ペンを下げる。OnRev(OUT_AC);Wait(t);Off(OUT_AC);ロボット本体を旋回させた後ペン先の始点と終点を揃えるために定義した。pen_down;zensin(t);pen_up;t秒間線を書く動作を定義した。kaiten1(tyokkaku);soroeru(58);write(t);ロボット本体を直角に旋回させてt秒間線を書く動作を定義した。†プログラムについて解説する。write(39);//髪の毛完成ここまでで髪の毛の部分を書き上げる。髪の毛右側とか左側というのは髪パーツの一番外側のタテ線のことである。ここは一か所がずれると全体がずれていくのでプログラミングするのに時間がかかった。正直に言うともう少しコンパクトにしたかった。同じような命令が続いていて見た目が悪い。write(65);//輪郭を書く輪郭を書く。一本線だが始点と終点が髪の毛の部分と合わないと顔のパーツもずれていくので細かく調整した。write(36);//口を書く口を書く。顔の中心に書けるように時間を調整した。書く時間が長すぎたり曲がる角度がずれたりするとニヒルな笑みを浮かべた絵になってしまうので丁寧に調整した。write(20);//右目を書く}目を書いて完成。目は口がずれない限り顔の中におさまるようになっている。†プログラムが汚いプログラミングにとりかかるのが遅れてしまい、何度も同じ命令をしているので行数が多く終わってからもっと綺麗にまとめられるのに気づいた。髪の毛の部分はそれが顕著にみられる。次にプログラミングするときは余裕を持ち、スマートに組めるようにしたい。ロボット本体のアクシデントある時から、ロボットが前進する際にまっすぐ進まず軽く曲がってしまうようになった。前述したように床との相性や電池残量による回転する速度の変化もあった。私のプログラムは長時間前進したり細かく回転する命令が多く、これらのアクシデントの影響を大きく受けた。素早く対処できるようなプログラミングを心がけたい。完成した絵を保存しなかった一度非常に完成度の高い似顔絵が書けたのだが、その紙はどこかへいってしまった。授業中に書いたものは失敗に終わってしまったため、完成した絵はここに載せることができなかった。