#contents *目標 [#o42d4d1e] 「舜」という字を書く。 *ロボット [#m9935bfe] 試作2号機です。 &ref(new_IMG_0280.jpg); &ref(new_IMG_0283.jpg); 試作1号機ではペンをロボット本体の中心に設置しても重心のズレからか、ロボットがカーブすると筆跡はいびつな形になってしまいました。 そこで、重心を決めるために三輪車にする事にしました。前輪には動力はついていません。 これが前輪の画像です。 &ref(new_IMG_0282.jpg); そして、重心は1番後ろの真ん中とわかったのでそこにペンを設置。 この装置はペンの上げ下げが可能です。 &ref(new_IMG_0281.jpg); *書き順 [#m7a83b71] 今回、正式な書き順じゃなくても良かったのでロボットにはできるだけ最短距離を進ませる事にしました。あと、効率を重視して近くの線に向かわせることです。 &ref(new_書き順.jpg); *プログラム [#rb5f1b67] **定義 [#ubc86ed1] 筆上下する時間は微調整が必要でした。右左折はあらかじめよく使う時間を設定しました。 #define Mtime 10 //筆上下する時間 #define pen_down OnRev(OUT_B);Float(OUT_B); //ペンを下ろす #define pen_up OnFwd(OUT_B);Off(OUT_B); //ペンを上げる #define turn_left1 OnFwd(OUT_C);OnRev(OUT_A);Wait(90);Off(OUT_AC); //90度左折 #define turn_left2 OnFwd(OUT_C);OnRev(OUT_A);Wait(45);Off(OUT_AC); //45度左折 #define turn_left3 OnFwd(OUT_C);OnRev(OUT_A);Wait(135);Off(OUT_AC); //135度左折 #define turn_right1 OnFwd(OUT_A);OnRev(OUT_C);Wait(45);Off(OUT_AC); //45度右折 #define turn_right2 OnFwd(OUT_A);OnRev(OUT_C);Wait(90);Off(OUT_AC); //90度右折 #define turn_right3 OnFwd(OUT_A);OnRev(OUT_C);Wait(135);Off(OUT_AC); //135度右折 #define go_short OnFwd(OUT_AC);Wait(20);Off(OUT_AC); //直進 **プログラミング [#ia7c91d7] task main() { pen_down; // 1画目 OnFwd(OUT_AC); Wait(30); Off(OUT_AC); pen_up; turn_left3; go_short; turn_left1; pen_down; // 2画目 go_short; pen_up; turn_right2; go_short; turn_right2; pen_down; // 3画目 go_short; pen_up; OnFwd(OUT_AC); Wait(10); Off(OUT_AC); turn_left3; pen_down; // 4画目 OnFwd(OUT_AC); Wait(30); Off(OUT_AC); pen_up; turn_right3; OnFwd(OUT_AC); Wait(40); Off(OUT_AC); turn_left3; pen_down; // 5,6,7画目 go_short; turn_left3; OnFwd(OUT_AC); Wait(40); Off(OUT_AC); turn_left1; go_short; pen_up; OnFwd(OUT_AC); Wait(10); Off(OUT_AC); turn_left1; OnFwd(OUT_AC); Wait(10); Off(OUT_AC); turn_left2; pen_down; // 8,9,10画目 go_short; turn_right1; OnFwd(OUT_AC); Wait(10); turn_right3; OnFwd(OUT_AC); Wait(30); Off(OUT_AC); turn_left3; pen_up; go_short; turn_left1; pen_down; // 11画目 go_short; pen_up; turn_right2; OnFwd(OUT_AC); Wait(10); Off(OUT_AC); turn_right2; go_short; turn_right2; pen_down; // 12画目 go_short; pen_up; OnRev(OUT_AC); Wait(10); Off(OUT_AC); turn_right2; pen_down; // 13画目 OnFwd(OUT_AC); Wait(10); Off(OUT_AC); pen_up; turn_left1; OnRev(OUT_AC); Wait(15); Off(OUT_AC); pen_down; // 14画目 OnFwd(OUT_AC); Wait(15); Off(OUT_AC); pen_up; OnFwd(OUT_AC); Wait(10); Off(OUT_AC); pen_down; // 15画目 OnFwd(OUT_AC); Wait(10); Off(OUT_AC); pen_up; } *反省点 [#i6e65064] 後輪の車輪が大きすぎて予想より多く進んでしまった。 試作1号機の写真も残しておけばよかったです。 プログラムは非常に長くなってしまった。OnRevを使えばもう少し短くなったと思います。