今、ペンを動かすところを作成中です。
まだ、ペンのところが未完成なので、そこは省略します。
task main() { OnFwd(OUT_A+OUT_C);Wait(136); // 1画目を書きます。 OnRev(OUT_C);Wait(150); // 方向転換をします。 OnFwd (OUT_C); Wait(100); // 2画目に移動します。 OnRev(OUT_C);Wait(120); // 方向転換をします。 OnFwd (OUT_C); Wait(50); // 2画目を書きはじめます。 OnRev(OUT_C);Wait(130); // 方向転換をします。 OnFwd (OUT_C); Wait(86); // 2画目の続きを書きます。 OnRev(OUT_A+OUT_C);Wait(136); // 3画目に移動します。 OnFwd(OUT_A+OUT_C);Wait(50); // 3画目を書きます。 OnRev(OUT_A);Wait(70); // 方向転換をします。 OnFwd(OUT_A);Wait(86); // 4画目を書きます。 Off(OUT_A+OUT_C); // 止まります。 }
マクロを使って短くしてみました。
#define turn_right(t) OnFwd (OUT_A);OnRev (OUT_C);Wait (t);Off (OUT_A+OUT_C); #define turn_left(t) OnFwd (OUT_C);OnRev (OUT_A);Wait (t);Off (OUT_A+OUT_C); #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define go_back OnRev(OUT_A+OUT_C);Wait(136);Off(OUT_A+OUT_C); task main () { go_straight(136); turn_right(150); go_straight(100); turn_right(120); go_straight(50); turn_right(130); go_straight(86); go_back; go_straight(50); turn_left(70); go_straight(86); }
前回のロボットは、ペンを動かす装置がうまく働かなかったため、発表ができませんでした。そこで、下のように改造してみました。(ちなみに、名前は「ミズカキ君」といいます。)
ペンの動くところは、ギアの回転にあわせて上下するようになっています。
機体の組みなおしとともに、以下のように書き換えました。
//製作:田中隆洋 task main () { OnFwd(OUT_B);Wait(10);Off(OUT_B); //ペンを下ろします。 OnFwd(OUT_A+OUT_C);Wait(68);Off(OUT_A+OUT_C); //一画目を書きます。 OnRev(OUT_B);Wait(10);Off(OUT_B); //ペンを上げます。 OnFwd (OUT_C);OnRev (OUT_A);Wait (75);Off(OUT_A+OUT_C); //回転します。 OnFwd(OUT_A+OUT_C);Wait(40);Off(OUT_A+OUT_C); //2画目に移動します。 OnFwd (OUT_C);OnRev (OUT_A);Wait (55);Off (OUT_A+OUT_C); //回転します。 OnRev(OUT_A+OUT_C);Wait(20);Off(OUT_A+OUT_C); //2画目を書き始めるところまで移動します。 OnFwd(OUT_B);Wait(10);Off(OUT_B); //ペンを下ろします。 OnFwd(OUT_A+OUT_C);Wait(25);Off(OUT_A+OUT_C); //2画目を書きます。 OnRev(OUT_B);Wait(10);Off(OUT_B); //ペンを上げます。 OnFwd (OUT_C);OnRev (OUT_A);Wait (65);Off (OUT_A+OUT_C); //回転します。 OnRev(OUT_A+OUT_C);Wait(10);Off(OUT_A+OUT_C); //2画目の続きを書き始めるところまで移動します。 OnFwd(OUT_B);Wait(10);Off(OUT_B); //ペンを下ろします。 OnFwd(OUT_A+OUT_C);Wait(43);Off(OUT_A+OUT_C); //2画目の続きを書きます。 OnRev(OUT_B);Wait(10);Off(OUT_B); //ペンを上げます。 OnFwd (OUT_C);OnRev (OUT_A);Wait (5);Off (OUT_A+OUT_C); //回転します。 OnRev(OUT_A+OUT_C);Wait(63);Off(OUT_A+OUT_C); //3画目まで移動します。 OnFwd (OUT_C);OnRev (OUT_A);Wait (10);Off (OUT_A+OUT_C); //少し角度を調整します。 OnRev(OUT_A+OUT_C);Wait(10);Off(OUT_A+OUT_C); //3画目を書き始めるところに移動します。 OnFwd(OUT_B);Wait(10);Off(OUT_B); //ペンを下ろします。 OnFwd(OUT_A+OUT_C);Wait(25);Off(OUT_A+OUT_C); //3画目を書きます。 OnRev(OUT_B);Wait(10);Off(OUT_B); //ペンを上げます。 OnFwd (OUT_A);OnRev (OUT_C);Wait (45);Off (OUT_A+OUT_C); //回転します。 OnRev(OUT_A+OUT_C);Wait(5);Off(OUT_A+OUT_C); //4画目を書き始めるところに移動します。 OnFwd(OUT_B);Wait(10);Off(OUT_B); //ペンを下ろします。 OnFwd(OUT_A+OUT_C);Wait(43);Off(OUT_A+OUT_C); //4画目を書きます。 OnRev(OUT_B);Wait(10);Off(OUT_B); //ペンを上げます。 }
マクロを使ってみました。(動き方は上と同様)
#define turn_left(t) OnFwd (OUT_A);OnRev (OUT_C);Wait (t);Off (OUT_A+OUT_C); #define turn_right(t) OnFwd (OUT_C);OnRev (OUT_A);Wait (t);Off (OUT_A+OUT_C); #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define go_back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define pen_down OnFwd(OUT_B);Wait(10);Off(OUT_B) #define pen_up OnRev(OUT_B);Wait(10);Off(OUT_B) task main () { pen_down; go_straight(68); pen_up; turn_right(75); go_straight(40); turn_right(55); go_back(20); pen_down; go_straight(25); pen_up; turn_right(65); go_back(10); pen_down; go_straight(43); pen_up; turn_right(5); go_back(63); turn_right(10); go_back(10); pen_down; go_straight(25); pen_up; define turn_left(45) go_back(5); pen_down; go_straight(43); pen_up; }
発表できなかったので、ここに載せておきます。
簡単な文字を書くために、こんな大変だとは思いませんでした。メンバーもなかなか都合が合わなくて、あんまり集まる時間が取れませんでした。なので、次からは計画的にやりたいです。
前回までの分は消させていただきましたが、引き続きコメントをよろしくお願いします。