戻る
2005/A6/コンドの部屋
『左』を書くロボットのプログラム†
//『左』を書くロボット
//製作者:コンド
//製作日:05年11月8日
//キャタピラ仕様で、アームでペンを上下させるロボットのプログラムです。
数の定義†
#define move_time 20 // アームの上げ、下げの時間
#define Move_time 110 // ロボットの中心とペン先との誤差修正の時間
補助プログラム†
void turn_right(int x) // 右回転のためのプログラム
{
OnRev(OUT_A); OnFwd(OUT_C);
Wait(x); Off(OUT_A+OUT_C);
}
void turn_left(int y) // 左回転のためのプログラム
{
OnRev(OUT_C); OnFwd(OUT_A);
Wait(y); Off(OUT_A+OUT_C);
}
void go_straight(int z) // 直進のためのプログラム
{
OnFwd(OUT_A+OUT_C); Wait(z);
Off(OUT_A+OUT_C);
}
void back(int w) // 後退のためのプログラム
{
OnRev(OUT_A+OUT_C); Wait(w);
Off(OUT_A+OUT_C);
}
void right(int t) // 二画目の右曲線のためのプログラム
{
Off(OUT_A); OnFwd(OUT_C);
Wait(t); Off(OUT_C);
}
void up() // アームを上げるプログラム
{
OnFwd(OUT_B); Wait(move_time);
Off(OUT_B);
}
void down() // アームを下げるプログラム
{
OnRev(OUT_B); Wait(move_time);
Off(OUT_B);
}
メインのプログラム†
task main()
{
down(); // 一画目、書き始め
go_straight(177); // 一画目の直線を書く
up(); // 一画目、書き終わり
back(10); // 後ろに移動
turn_right(159); // 右に回転
back(153); // 二画目の書き始めに移動
down(); // 二画目、書き始め
repeat(8){ // 二画目の右曲線を書く
go_straight(15);
right(11);
}
up(); // 二画目、書き終わり
turn_right(292); // 右に回転
back(54); // 三画目の始めに移動
turn_right(170); // 右に回転
back(Move_time); // 誤差修正
down(); // 三画目、書き始め
go_straight(119); // 三画目の直線
up(); // 三画目、書き終わり
go_straight(65); // 四画目の始めに移動
turn_right(159); // 右に回転
back(Move_time); // 誤差修正
down(); // 四画目、書き始め
go_straight(98); // 四画目の直線
up(); // 四画目、書き終わり
go_straight(Move_time); // 誤差修正
turn_left(140); // 左に回転
back(235); // 五画目の書き始めに移動
down(); // 画目、書き始め
go_straight(180); // 五画目の直線を書く
up(); // 五画目、書き終わり
go_straight(130); // ロボットが退場して終了
}
反省点†
・キャタピラ仕様のため、文字が波文字になってしまった。
・『ナ』と『エ』の接点がずれてしまった。
・プログラミング、ロボットの形が決まるまで時間が掛かってしまった。
- 見やすくて良いと思います。この調子で… -- TA M
- 大変わかりやすいプログラムになっていると思います。ついでに冒頭のプログラムの説明の部分も // でコメントアウトしておきましょうか。 -- 松本(教員)