// 作成者:コミ // 作成日:2006-5-21 task main () { OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //1画目 AとCのモータ正回転 Wait(160); Float(OUT_A+OUT_C); OnRev(OUT_C); //Cのモータ逆回転(右回転) Wait(30); Float(OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnFwd(OUT_C); //Cのモータ正回転 Wait(65); Float(OUT_C); OnRev(OUT_C); Wait(180); Float(OUT_C); OnRev(OUT_B); Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //2画目 AとCのモータ正回転 Wait(60); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //AとCのモータ正回転 Wait(10); Float(OUT_A+OUT_C); OnRev(OUT_A); //Aのモータ逆回転(左回転) Wait(90); Float(OUT_A); OnRev(OUT_A+OUT_C); //AとCのモータ逆回転(後進) Wait(30); Float(OUT_A+OUT_C); OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //AとCのモ−タ正回転 Wait(85); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnRev(OUT_A+OUT_C); //AとCのモータ逆回転 Wait(10); Float(OUT_A+OUT_C); OnRev(OUT_C); //Cのモータ逆回転 Wait(90); Float(OUT_C); OnRev(OUT_A+OUT_C); //AとCのモータ逆回転 Wait(100); Float(OUT_A+OUT_C); OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //3画目 AとCのモータ正回転 Wait(60); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //AとCのモータ正回転 Wait(100); Float(OUT_A+OUT_C); OnRev(OUT_A); //Aのモータ逆回転 Wait(175); Float(OUT_A); OnRev(OUT_B); //ペンを下げる Wait(4); Float(OUT_B); OnFwd(OUT_A+OUT_C); //4画目 AとCのモータ正回転 Wait(90); Float(OUT_A+OUT_C); OnFwd(OUT_B); //ペンを持ち上げる Wait(4); Float(OUT_B); }
ロボットのプログラミングは始めてだったので試作プログラムにかなりの時間を費やした。 とりあえずOnFwdやOnRevだけで書いてみた。 しかしそれでは修正するのにとてもめんどくさいと感じた 特に水の2画目、3画目がたいへんだった。書き始めの位置を決めるのがとても苦労した。何度プログラムを直したことか... しかしまだ完璧ではなく微妙にバランスが悪い...
// 作成者:コミ // 作成日:2006-5-24 #define PEN_UP 4 //ペンを持ち上げる #define PEN_DOWN 4 //ペンを下げる #define go_straight(t) OnFwd(OUT_A);OnFwd(OUT_C);Wait(t);Float(OUT_A+OUT_C); #define go_straight1(t) OnRev(OUT_A);OnRev(OUT_C);Wait(t);Float(OUT_A+OUT_C); #define turn_left(t) OnRev(OUT_A);Wait(t);Float(OUT_A); #define turn_right(t) OnRev(OUT_C);Wait(t);Float(OUT_C); #define turn_left1(t) OnFwd(OUT_C);Wait(t);Float(OUT_C); #define pen_up OnFwd(OUT_B);Wait(PEN_UP);Off(OUT_B); #define pen_down OnRev(OUT_B);Wait(PEN_DOWN);Off(OUT_B); task main() { pen_down; //1画目 go_straight(160); //1.6秒間前進 turn_right(30); //0.3秒間右旋回 pen_up; turn_left1(65); turn_right(180); //1.8秒間右旋回 pen_down; //2画目 go_straight(60); //0.6秒間前進 pen_up; go_straight(10); //0.1秒間前進 turn_left(90); //0.9秒間左旋回 go_straight1(30); //0.3秒間後進 pen_down; go_straight(85); //0.85秒間前進 pen_up; go_straight1(10); //0.1秒間前進 turn_right(90); //0.9秒間右旋回 go_straight1(100); //1秒間後進 pen_down; //3画目 go_straight(70); //0.7秒間前進 pen_up; go_straight(100); //1秒間前進 turn_left(175); //1.75秒間左旋回 pen_down; //4画目 go_straight(90); //0.9秒間前進 pen_up; }
試作プログラムをマクロを使って書き換えた。マクロを使うことによってプログラムが見やすくなった。 試作プログラムは直すのにめんどうだったが、マクロを使い直しやすくした。
プログラムはまだ試作なので、これを改良したプログラムを完成させたい。(5月23日) ペンを持ち上げる部分のギア比を変えてスピードを落とせばよかった。 ペンをうまく調整しないと、たまに字が書けない時があるのが残念だ。 時間に余裕を持たせてやっていたつもりだったが、かなり時間がたりなかった。 なので次回はもっと余裕を持たせてやりたい。
初めての課題だったので手探り状態だった。ペンを持たせるためにはどうすればいいかでかなり考えた。 「水」を書くぷろぐらむでも結構長いのに驚いた。 苦労の末に「水」を書くプログラムがなんとか完成してよかった。