[[戻る>2005/A6]] [[課題1>2005/練習問題#kadai1]] * 問題点 [#hb90ce88] - ペンをどうやって持たせるか - ペンをどうやって上げ下げするか - どうやれば綺麗に文字が書けるか * 試作ロボット [#ca485764] - 試作1 -- 歯車で腕を持ち上げたり下げたりしようとした。 うまく噛み合わず動かなくて失敗 * 最終的なロボットとプログラム [#k8684c6b] -歯車が噛み合わなかった点を反省して、ゴムで腕を上げ下げさせるようにした。 -それでも、手動で腕を動かした後はうまく動かなくなるので、ウォーミングアップ用のプログラム(腕を上げ下げさせる)を作った。 **各自のプログラム [#r9e76aa2] -K.M sub arms_down() { OnFwd(OUT_B); Wait(100); Off(OUT_B); } sub arms_up() { OnRev(OUT_B); Wait(100); Off(OUT_B); } sub turn_right() { OnFwd(OUT_A); OnRev(OUT_C); Wait(85); Off(OUT_A+OUT_C); } sub turn_left() { OnFwd(OUT_C); OnRev(OUT_A); Wait(85); Off(OUT_A+OUT_C); } task main() { arms_down(); OnFwd(OUT_A); OnRev(OUT_C); Wait(70); Off(OUT_A+OUT_C); arms_up();//1 OnFwd(OUT_A); OnRev(OUT_C); Wait(16); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(42); Off(OUT_A+OUT_C); turn_right(); OnRev(OUT_A+OUT_C); Wait(142); Off(OUT_A+OUT_C); arms_down(); OnRev(OUT_A+OUT_C); Wait(152); Off(OUT_A+OUT_C); arms_up();//2 OnFwd(OUT_A+OUT_C); Wait(213); Off(OUT_A+OUT_C); turn_right(); OnRev(OUT_A+OUT_C); Wait(131); Off(OUT_A+OUT_C); arms_down(); OnRev(OUT_A+OUT_C); Wait(48); Off(OUT_A+OUT_C); arms_up();//3 OnFwd(OUT_A+OUT_C); Wait(148); Off(OUT_A+OUT_C); turn_left(); OnRev(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); arms_down(); OnRev(OUT_A+OUT_C); Wait(69); Off(OUT_A+OUT_C); arms_up();//3.5 OnFwd(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); turn_right(); OnRev(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); arms_down(); OnRev(OUT_A+OUT_C); Wait(48); Off(OUT_A+OUT_C); arms_up();//4 OnFwd(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); turn_left(); OnRev(OUT_A+OUT_C); Wait(31); Off(OUT_A+OUT_C); arms_down(); OnRev(OUT_A+OUT_C); Wait(69); Off(OUT_A+OUT_C); arms_up();//5 OnRev(OUT_A); OnFwd(OUT_C); Wait(340); Off(OUT_A+OUT_C); } -AI sub pen_down(){// 腕を下げる Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(100); Off(OUT_B); } sub pen_up(){// 腕を上げる Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(100); Off(OUT_B); } void go(int t){// まっすぐ走る OnFwd(OUT_A+OUT_C); Wait(t); } void back(int t){// バックする OnRev(OUT_A+OUT_C); Wait(t); } task main(){ pen_down(); OnFwd(OUT_A); OnRev(OUT_C); Wait(70); pen_up();// 一画目 OnFwd(OUT_C); OnRev(OUT_A); Wait(70); back(30); OnFwd(OUT_A); Wait(70); OnFwd(OUT_C); Wait(10); OnRev(OUT_A); Wait(70); pen_down(); go(180); pen_up();// 二画目 back(120); OnFwd(OUT_A); Wait(74); back(50); OnFwd(OUT_C); Wait(10); pen_down(); go(70); pen_up();// 三画目 OnFwd(OUT_C); OnRev(OUT_A); Wait(70); OnRev(OUT_C); Wait(100); pen_down(); go(100); pen_up();// 四画目 go(100); OnFwd(OUT_A); OnRev(OUT_C); Wait(70); OnRev(OUT_A); Wait(100); pen_down(); go(100); pen_up();// 四画目その2 go(100); OnRev(OUT_C); Wait(70); OnFwd(OUT_C); Wait(10); pen_down(); back(100); pen_up();// 五画目 } * 反省点 [#kb41a65b] - 一秒間に走る距離と、何秒で回転するかを計ったが、電池の消耗→交換によりズレが生じてしまった #comment