*課題1 右側 : "木"の字を書くロボット[#z6e034cd] **ロボット [#rbdb7d38] 移動とペンの上下を行うことで文字を書くロボット。 モータにタイヤを直結させ、タイヤを回転させることでペンを上下させる。&br; OUT_Aに移動用右モータ、OUT_Cに移動用左モータ、OUT_Bにペン上下用モータを接続。 &ref(kadai01-001.jpg); **プログラム [#aaf64e92] -プログラム1 : 文字の線をすべて直線で書く #define PENTIME 15 sub penup() //ペンを上げる { OnFwd(OUT_B); Wait(PENTIME); Off(OUT_B); Wait(50); } sub pendn() //ペンを下げる { OnRev(OUT_B); Wait(PENTIME); Off(OUT_B); Wait(50); } void gofwd(int fwdtime) //前に移動 { OnFwd(OUT_A+OUT_C); Wait(fwdtime); Off(OUT_A+OUT_C); Wait(50); } void gorev(int revtime) //後ろに移動 { OnRev(OUT_A+OUT_C); Wait(revtime); Off(OUT_A+OUT_C); Wait(50); } void turnl(int turnltime) //左に曲がる { OnFwd(OUT_A); OnRev(OUT_C); Wait(turnltime); Off(OUT_A+OUT_C); Wait(50); } void turnr(int turnrtime) //右に曲がる { OnFwd(OUT_C); OnRev(OUT_A); Wait(turnrtime); Off(OUT_A+OUT_C); Wait(50); } task main() { Wait(100); //すぐに動き出さないように待機 pendn(); //1画目を書く gofwd(100); penup(); //2画目を書く位置まで移動 gorev(9); turnr(92); gorev(81); pendn(); //2画目を書く gofwd(150); penup(); //3画目を書く位置まで移動 gorev(68); turnr(43); gorev(41); pendn(); //3画目を書く gofwd(100); penup(); //4画目を書く位置まで移動 gorev(59); turnl(86); gorev(41); pendn(); //4画目を書く gofwd(100); penup(); } -プログラム2 : 3画目、4画目を円弧で書く #define PENTIME 15 sub penup() //ペンを上げる { OnFwd(OUT_B); Wait(PENTIME); Off(OUT_B); Wait(50); } sub pendn() //ペンを下げる { OnRev(OUT_B); Wait(PENTIME); Off(OUT_B); Wait(50); } void gofwd(int fwdtime) //前に移動 { OnFwd(OUT_A+OUT_C); Wait(fwdtime); Off(OUT_A+OUT_C); Wait(50); } void gorev(int revtime) //後ろに移動 { OnRev(OUT_A+OUT_C); Wait(revtime); Off(OUT_A+OUT_C); Wait(50); } void turnl(int turnltime) //左に曲がる { OnFwd(OUT_A); OnRev(OUT_C); Wait(turnltime); Off(OUT_A+OUT_C); Wait(50); } void turnr(int turnrtime) //右に曲がる { OnFwd(OUT_C); OnRev(OUT_A); Wait(turnrtime); Off(OUT_A+OUT_C); Wait(50); } task main() { Wait(100); //すぐに動き出さないように待機 pendn(); gofwd(100); //1画目を書く penup(); //2画目を書く位置まで移動 gorev(9); turnr(95); gorev(81); pendn(); //2画目を書く gofwd(150); penup(); //3画目を書く位置まで移動 gorev(73); turnr(43); gorev(41); pendn(); //3画目を書く OnFwd(OUT_A+OUT_C); repeat(5) { Wait(8); Float(OUT_A); Wait(12); OnFwd(OUT_A); } Off(OUT_A+OUT_C); Wait(50); penup(); //4画目を書く位置まで移動 gorev(56); turnl(86); gorev(41); pendn(); //4画目を書く OnFwd(OUT_A+OUT_C); repeat(5) { Wait(8); Float(OUT_C); Wait(12); OnFwd(OUT_C); } Off(OUT_A+OUT_C); Wait(50); penup(); } **工夫した点 [#e6523722] [[2006a/C4 に戻る>2006a/C4]]