これがタイヤ部の工夫点。1プレート分だけずれている。
これもモーターと可動部をつなげるために工夫が必要だった。 最初のドライブベースからアイディアを得て、モーターを挟み込んでみたらうまくいった。
やはり、工夫した点は、ペンをどのように保持しておくかであり、その点は、写真の白い ギアを使うことで解決した。 これをつかうことで、ペンを持ち上げて保持する際、常にモーターを回し続けていても本体には負荷がかからない(もちろん電気的な負荷はコンピューターにはかかるかもしれないが・・・^^;)ので、常にまわしづづけることで、ペンの保持をすることができる。
sub glasses() //メガネのサブルーチン { OnFwd(OUT_A+OUT_C); //前進 Wait(90); OnRev(OUT_C); //片方のみ逆回転させてメガネの右レンズを作る Wait(25); Off(OUT_A+OUT_B+OUT_C); OnRev(OUT_B); //ペン持ち上げ Wait(15); OnFwd(OUT_A+OUT_C); //位置補正(機体移動) Wait(42); OnRev(OUT_A); Wait(25); OnRev(OUT_C) Wait(45); Off(OUT_A+OUT_B+OUT_C); OnFwd(OUT_B); //ペンを下す Wait(23); Off(OUT_A+OUT_B+OUT_C); OnRev(OUT_A+OUT_C); //メガネの右レンズの下枠を作る Wait(28); OnFwd(OUT_A+OUT_C); OnRev(OUT_A); Wait(22); OnRev(OUT_B); //ペン持ち上げ Off(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A+OUT_C); //位置補正(機体移動) OnRev(OUT_C); Wait(22); OnFwd(OUT_C); Wait(4); OnRev(OUT_A+OUT_C); Wait(18); OnFwd(OUT_A+OUT_C); OnRev(OUT_A); Wait(20); OnFwd(OUT_B); //ペンを下す Off(OUT_A+OUT_C); Wait(50); OnFwd(OUT_A+OUT_C); //メガネ左レンズを作る OnRev(OUT_C); Wait(22); OnRev(OUT_A); Wait(30); OnFwd(OUT_A+OUT_C); OnRev(OUT_A); Wait(22); Off(OUT_A+OUT_C); OnRev(OUT_B); } sub faceline() //輪郭のサブルーチン { OnFwd(OUT_B); Wait(5);Float(OUT_B); //ペンをゆっくり下す OnFwd(OUT_A+OUT_C); //前進 Wait(80); Off(OUT_C); //左に旋回 Wait(120); OnRev(OUT_B); //ペンを上げる OnFwd(OUT_C); //位置補正(機体移動) Wait(48); Off(OUT_A+OUT_C); OnFwd(OUT_A); //左回転 OnRev(OUT_C); Wait(120); OnRev(OUT_A); //位置補正(ペン位置変更) Wait(65); OnFwd(OUT_B); //ペンをゆっくり下す Wait(5);Float(OUT_B); OnFwd(OUT_A+OUT_C); //前進 Wait(80); OnRev(OUT_B); //ペンを上げる OnFwd(OUT_A+OUT_C); //位置補正(機体移動) Wait(54); OnFwd(OUT_A); //左回転 OnRev(OUT_C); Wait(85); OnRev(OUT_A); //位置補正 Wait(65); OnFwd(OUT_B); //ペンを下ろす Wait(5);Float(OUT_B); OnFwd(OUT_A+OUT_C); //前進 Wait(88); Off(OUT_A+OUT_C); OnRev(OUT_B); //ペンを上げる } sub nose() //鼻のサブルーチン { OnFwd(OUT_A+OUT_C); //前進 Wait(34); OnRev(OUT_C); //左旋回 Wait(22); OnRev(OUT_B); //ペンを上げる OnFwd(OUT_C); //斜めを向いた状態で前進 Wait(36); OnRev(OUT_A); //右旋回 Wait(22); Float(OUT_B); OnRev(OUT_C); //ペンを上げた状態でバック Wait(32); OnFwd(OUT_B); //ペンをゆっくり下ろす Wait(5); Float(OUT_B); OnRev(OUT_A+OUT_C); //ペンを下ろした状態でバック Wait(29); Off(OUT_A+OUT_C); //停止 } sub mouth() { OnFwd(OUT_C); //右旋回 OnRev(OUT_A); Wait(20); OnFwd(OUT_B); //ペンをゆっくり下ろす Wait(5); Float(OUT_B); OnFwd(OUT_A); //左旋回しながら口を描く OnRev(OUT_C); Wait(60); OnRev(OUT_B); //ペンを上げる } sub hair() //髪の毛のサブルーチン { repeat(2) { OnFwd(OUT_B); //ペンをゆっくり下ろす Wait(5); Float(OUT_B); OnRev(OUT_A); //右旋回 OnFwd(OUT_C); Wait(60); Off(OUT_A); //右のモーターを停止 OnRev(OUT_B); //ペンを上げる OnRev(OUT_C); //斜めになってる車体をまっすぐに向ける、兼微妙に前進 Wait(20); OnFwd(OUT_B); //ペンをゆっくり下ろす Wait(5); Float(OUT_B); OnRev(OUT_C); //左旋回 OnFwd(OUT_A); Wait(60); Off(OUT_C); //左のモーターを停止 OnRev(OUT_B); //ペンを上げる OnRev(OUT_A); //車体をまっすぐにする、兼微妙に前進 Wait(20); } //以上の動作を二回繰り返す(4本毛を書かく) } task main() //全体の動作 { faceline(); //輪郭から描く。 OnFwd(OUT_A+OUT_C); //輪郭の最後から少しだけ前進 Wait(40); Off(OUT_A+OUT_C); //停止 OnFwd(OUT_A); //左に約90°旋回 OnRev(OUT_C); Wait(140); OnRev(OUT_A); //輪郭の線と、眼鏡の線がつながらないように、少しだけ前進 Wait(38); OnFwd(OUT_B); //ペンをゆっくり下ろす Wait(5); Float(OUT_B); glasses(); //眼鏡を描く OnFwd(OUT_A+OUT_C); //顔の中心線に移動 Wait(98); OnRev(OUT_C); //左に約90°旋回 Wait(139); OnRev(OUT_A); //位置補正 Wait(30); OnFwd(OUT_B); //ペンをゆっくり下ろす Wait(6); Float(OUT_B); nose(); //鼻を描く OnRev(OUT_B); //ペンを上げる OnFwd(OUT_A+OUT_C); //口を描く位置まで前進 Wait(48); mouth(); //口を描く Wait(200); OnFwd(OUT_C); //前進 Wait(50); OnRev(OUT_C); //約180°左旋回 Wait(260); Off(OUT_A+OUT_C); //停止 hair(); //髪の毛を描く Off(OUT_A+OUT_C); //終了 }
#define turn_up OnFwd(OUT_B); #define turn_down OnRev(OUT_B);Wait(4);Float(OUT_B); #define go OnFwd(OUT_A);OnFwd(OUT_C); #define back OnRev(OUT_A);OnRev(OUT_C); #define tomaru Off(OUT_A+OUT_C+OUT_B); #define tomaruAC Off(OUT_A+OUT_C); #define backA OnRev(OUT_A); #define backC OnRev(OUT_C); sub down() //ペンを下げる { turn_up; Wait(100); turn_down; } sub megane() //眼鏡を書くプログラム { go; Wait(70); //眼鏡の上の線 backA; Wait(25); //右の線 tomaru; turn_up; Wait(15); go;Wait(55); backC;Wait(25); back;Wait(62); //下の線を書くために調整 tomaru; turn_down;Wait(50);tomaru; back;Wait(28); go; backC;Wait(20); turn_up;tomaruAC;Wait(50);tomaru; go; backA;Wait(20); go;Wait(70); //右のレンズ backA;Wait(2); back;Wait(80); go; backC;Wait(20); turn_down;tomaruAC;Wait(50); go; backA;Wait(20); back;Wait(24); go; backC;Wait(20); turn_up; //左のレンズ } sub linkaku() { back;Wait(60);tomaru;Wait(50); //輪郭をかける状態に戻す turn_down;Wait(50); go;Wait(70); //左の頬 Off(OUT_C);Wait(70);tomaru; turn_up; go;Wait(48);tomaru; go;backC;Wait(110);tomaru; back;Wait(53);tomaru; turn_down;Wait(60);tomaru; //顎の部分 go;Wait(60); turn_up; go;Wait(50);tomaru; go;backC;Wait(154);tomaru; } sub hana() { go;backA;Wait(325);tomaru; back;Wait(94);tomaru; go;backA;Wait(100);tomaru; back;Wait(25);go;backC;Wait(73);tomaru; go;Wait(44);tomaru; turn_down;Wait(50); go;Wait(25); backC;Wait(8);tomaru; turn_up;Wait(50);tomaru; //鼻を書くいい位置につく go;Wait(5);tomaru; turn_down;Wait(50); go;backC;Wait(20); //鼻を一気/ go;backA;Wait(200);tomaru; turn_up;Wait(67);tomaru; back;Wait(8);tomaru; go;backC;Wait(200);tomaru; go;Wait(2);tomaru;tomaru; } } task main() { down(); Wait(30); megane(); go;Wait(58); backA;Wait(147); linkaku(); go;Wait(48); kaminoke(); turn_up;Wait(50);tomaru; go;backA;Wait(75);tomaru; back;Wait(7);tomaru; kaminoker(); turn_up;Wait(50);tomaru; hana(); turn_up;Wait(50); tomaru; }
FI まだ終わってないみたいなので、また後で見ます。
TAKA プログラムに説明を入れてください