*課題1 右側 : "木"の字を書くロボット[#z6e034cd] **ロボット [#rbdb7d38] 移動とペンの上下を行うことで文字を書くロボット。&br; モータを直結させたタイヤをペンに押し当てることでペンを固定した。上下はこのタイヤを回転させて行う。&br; OUT_Aに移動用右側モータ、OUT_Cに移動用左側モータ、OUT_Bにペン上下用モータを接続した。 &ref(kadai01-001.jpg); &ref(kadai01-002.jpg); **プログラム [#aaf64e92] 作成日 2005/05/22 作成者 原 辰徳 ============================== sub penup() //ペンを上げる {OnFwd(OUT_B);Wait(15);Off(OUT_B);} sub pendn() //ペンを下げる {OnRev(OUT_B);Wait(16);Off(OUT_B);} void gofwd(int fwdtime) //前に移動 {OnFwd(OUT_A+OUT_C);Wait(fwdtime);Off(OUT_A+OUT_C);} void gorev(int revtime) //後ろに移動 {OnRev(OUT_A+OUT_C);Wait(revtime);Off(OUT_A+OUT_C);} void turnl(int turnltime) //左に曲がる {OnFwd(OUT_A);OnRev(OUT_C); Wait(turnltime);Off(OUT_A+OUT_C);Wait(40);} void turnr(int turnrtime) //右に曲がる {OnFwd(OUT_C);OnRev(OUT_A); Wait(turnrtime);Off(OUT_A+OUT_C);Wait(40);} task main() { Wait(100); //すぐに動き出さないように待機 pendn(); //1画目を書く Wait(40); gofwd(100); penup(); Wait(40); gorev(9); //2画目を書く位置まで移動 Wait(40); turnl(95); pendn(); //2画目を書く gorev(150); penup(); Wait(40); gofwd(170); //3画目を書く位置まで移動 Wait(40); turnl(155); gorev(25); Wait(40); pendn(); //3画目を書く OnFwd(OUT_A+OUT_C); repeat(5) { Wait(8); Float(OUT_A); Wait(12); OnFwd(OUT_A); } Off(OUT_A+OUT_C); penup(); Wait(40); OnRev(OUT_C); //4画目を書く位置まで移動 repeat(3) { Wait(12); OnRev(OUT_A); Wait(8); Float(OUT_A); } Off(OUT_A+OUT_C); Wait(40); turnl(86); gorev(30); Wait(40); pendn(); //4画目を書く OnFwd(OUT_A+OUT_C); repeat(5) { Wait(8); Float(OUT_C); Wait(12); OnFwd(OUT_C); } Off(OUT_A+OUT_C); penup(); } [[改良前のプログラムはこちら。>2006a/C4/課題1右/改良前のプログラム]]&br;&br; プログラムの改良点 -すべて直線で木の字を書くのを、3,4画目は曲線で書くようにした。 -余計な待機時間をなくし、インクのにじみを解消した。 -ペンを下げる時のモータの回転時間を上げる時よりわずかに長くし、確実にペンを紙に触れさせかすれを解消しようとした。&br;しかし、振動等による影響のほうが大きかったようで改善されず。 -数値の調整 **工夫した点 [#e6523722] -シンプルな構造 -3,4画目は直線ではなく曲線になるようにした。 **苦労した点 [#x5ed3c70] -3,4画目の始点の調整 **残っている問題点 [#p6b60e35] -振動が発生し、かすれてうまく線が引けないことがある。特に曲線の3,4画目を描く時にそうなりやすい。 -実行するたびに結果に違いが出る。 [[2006a/C4 に戻る>2006a/C4]]