*課題1 右側 : "木"の字を書くロボット[#z6e034cd] **ロボット [#rbdb7d38] 移動とペンの上下を行うことで文字を書くロボット。&br; モータにタイヤを直結させ、タイヤを回転させることでペンを上下させる。&br; OUT_Aに移動用右モータ、OUT_Cに移動用左モータ、OUT_Bにペン上下用モータを接続。 &ref(kadai01-001.jpg); &ref(kadai01-002.jpg); **プログラム [#aaf64e92] kadai001-03.nqc 作成日 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(); } **工夫した点 [#e6523722] -シンプルな機構 -3,4画目は直線ではなく曲線になるようにした。 **残っている問題点 [#p6b60e35] -振動が発生することがあり、その時はうまく線が引けない。 [[2006a/C4 に戻る>2006a/C4]]