task main() { OnFwd(OUT_A); //前進 OnRev(OUT_C); Wait(300); OnFwd(OUT_A); //90度回転 OnFwd(OUT_C); Wait(150); OnFwd(OUT_A); //前進 OnRev(OUT_C); Wait(300); OnFwd(OUT_A); //90度回転 OnFwd(OUT_C); Wait(150); OnFwd(OUT_A); //前進 OnRev(OUT_C); Wait(300); OnFwd(OUT_A); //90度回転 OnFwd(OUT_C); Wait(150); OnFwd(OUT_A); //前進 OnRev(OUT_C); Wait(300); Off(OUT_A+OUT_C); //停止 }
初めてかいたプログラムなので無駄が多く長い。
task main() { repeat(3){ //前進+90度回転を3回繰り返す OnFwd(OUT_A); OnRev(OUT_C); Wait(300); OnFwd(OUT_A); OnFwd(OUT_C); Wait(150); } OnFwd(OUT_A); //前進 OnRev(OUT_C); Wait(300); Float(OUT_A+OUT_C); //停止 }
はじめに書いたプログラムと比べるとずいぶんスッキリした。
task main() { OnRev(OUT_B); //ペンをおろす Wait(50); Off(OUT_B); OnFwd(OUT_A); //右の1画目をかく OnRev(OUT_C); Wait(150); Off(OUT_A+OUT_C); OnFwd(OUT_B); //ペンをあげる Wait(70); Off(OUT_B); OnFwd(OUT_A); //右の2画目の始点へ移動 OnRev(OUT_C); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_A); Wait(100); Off(OUT_A); OnFwd(OUT_C); Wait(400); Off(OUT_A+OUT_C); OnRev(OUT_A); OnFwd(OUT_C); Wait(50); Off(OUT_A+OUT_C); OnRev(OUT_B); //ペンをおろす Wait(50); Off(OUT_B); OnFwd(OUT_A); //右の2画目をかく OnRev(OUT_C); Wait(130); Off(OUT_A+OUT_C); OnFwd(OUT_B); //ペンをあげる Wait(70); Off(OUT_B); OnFwd(OUT_A); //右の3画目の始点へ移動 OnRev(OUT_C); Wait(50); Off(OUT_A+OUT_C); OnFwd(OUT_A); OnRev(OUT_C); Wait(80); Off(OUT_A+OUT_C); OnRev(OUT_A); Wait(390); Off(OUT_A); OnRev(OUT_A); OnFwd(OUT_C); Wait(125); Off(OUT_A+OUT_C); OnFwd(OUT_A); OnRev(OUT_C); Wait(100); Off(OUT_A+OUT_C); OnRev(OUT_B); //ペンをおろす Wait(50); Off(OUT_B); OnFwd(OUT_A); //右の3画目をかく OnRev(OUT_C); Wait(70); Off(OUT_A+OUT_C); OnFwd(OUT_B); //ペンをあげる Wait(70); Off(OUT_B); OnFwd(OUT_A); //右の4画目の始点へ移動 OnRev(OUT_C); Wait(190); Off(OUT_A+OUT_C); OnFwd(OUT_C); Wait(450); Off(OUT_C); OnRev(OUT_A); OnFwd(OUT_C); Wait(30); Off(OUT_A+OUT_C); OnRev(OUT_B); //ペンをおろす Wait(70); Off(OUT_B); OnFwd(OUT_A); //右の4画目の一部をかく OnRev(OUT_C); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_B); //ペンをあげる Wait(80); Off(OUT_B); OnFwd(OUT_A); //4画目の残りをかくための始点へ移動 OnRev(OUT_C); Wait(220); Off(OUT_A+OUT_C); OnRev(OUT_A); Wait(400); Off(OUT_A); OnRev(OUT_A); OnFwd(OUT_C); Wait(65); Off(OUT_A+OUT_C); OnRev(OUT_B); //ペンをおろす Wait(70); Off(OUT_B); OnFwd(OUT_A); //4画目の残りをかく OnRev(OUT_C); Wait(70); Off(OUT_A+OUT_C); OnFwd(OUT_B); //ペンをあげる Wait(70); Off(OUT_B); OnFwd(OUT_A); //右の5画目の始点へ移動 OnRev(OUT_C); Wait(220); Off(OUT_A+OUT_C); OnRev(OUT_A); Wait(420); Off(OUT_A); OnFwd(OUT_A); OnRev(OUT_C); Wait(40); Off(OUT_A+OUT_C); OnRev(OUT_B); //ペンをおろす Wait(50); Off(OUT_B); OnRev(OUT_A); //右の5画目をかく OnFwd(OUT_C); Wait(100); Off(OUT_A+OUT_C); //停止 OnFwd(OUT_B); //ペンをあげる Wait(70); Off(OUT_B); }
sub pen_up() {OnFwd(OUT_B); Wait(70); Off(OUT_B); } sub pen_down() {OnRev(OUT_B); Wait(50); Off(OUT_B); } void go(int t) {OnFwd(OUT_A); OnRev(OUT_C); Wait(t); Off(OUT_A+OUT_C); } void back(int t) {OnRev(OUT_A); OnFwd(OUT_C); Wait(t); Off(OUT_A+OUT_C); } void back_right(int t) {OnFwd(OUT_C); Wait(t); Off(OUT_C); } void go_left(int t) {OnFwd(OUT_A); Wait(t); Off(OUT_C); } void back_left(int t) {OnRev(OUT_A); Wait(t); Off(OUT_A); } task main() { pen_down(); //ペンをおろす go(150); //右の1画目をかく pen_up(); //ペンをあげる go(100); //右の2画目の始点へ移動 go_left(100); back_left(400); back(50); pen_down(); //ペンをおろす go(130); //右の2画目をかく pen_up(); //ペンをあげる go(130); //右の3画目の始点へ移動 back_left(390); back(125); go(100); pen_down(); //ペンをおろす go(70); //右の3画目をかく pen_up(); //ペンをあげる go(190); //右の4画目の始点へ移動 back_right(450); back(30); pen_down(); //ペンをおろす go(100); pen_up(); //ペンをあげる go(220); //4画目の残りをかくための始点へ移動 back_left(400); back(65); pen_down(); //ペンをおろす go(70); //4画目の残りをかく pen_up(); //ペンをあげる go(220); //右の5画目の始点へ移動 back_left(420); go(40); pen_down(); //ペンをおろす back(100); //右の5画目をかく pen_up(); //ペンをあげる }
同じプログラムであっても書く度に形が変わり大変だった。 ペンをアームに固定するのに苦労した。ペンをアームに固定するためにしっかりと固定できる太さのペンを選んだり、いろいろなパーツを組み合わせてきつく締めることでなんとか解決できた。