***[[学習ノート Hypodytes rubripinnis>2005/A5/学習ノート Hypodytes rubripinnis]] [#k8b982c5] ***課題1:字を書くロボット[[課題1右>2005/A5/課題1右]] [#y9c2d987] *『右』を書くプログラム [#nc79a922] 作成者:Hypodytes rubripinnis **&color(orange){&size(25){マクロを使ったプログラム掲載しました!};}; [#nd5930aa] **マクロを使って短くしたプログラム [#q3589905] #define go_streight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define up_arm OnFwd(OUT_B);Wait(10);Off(OUT_B); #define down_arm OnRev(OUT_B);Wait(10);Off(OUT_B); #define turn_right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); #define turn_left(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C); task main ( ) { SetPower(OUT_C,0); //モーターパワーC0 down_arm; //ペン下げ go_streight(113); //17.5cm前進 up_arm; //ペン上げ go_streight(45); //7cm前進 SetPower(OUT_C,7); //モーターパワーC7 turn_right(180); //132°右旋回 go_streight(60); //10.3cm前進 turn_right(82); //90°右旋回 back(80); //7cm後進 down_arm; //ペン下げ go_streight(127); //19.6cm前進 up_arm; //ペン上げ go_streight(45); //7cm前進 turn_right(146); //160°右旋回 go_streight(120); //21.7cm前進 turn_left(55); //70°左旋回 back(115); //7cm後進 down_arm; //ペン下げ go_streight(65); //10cm前進 up_arm; //ペン上げ back(10); //3cm後進 turn_left(88); //90°左旋回 back(60); //7cm後進 down_arm; //ペン下げ go_streight(88); //12.5cm前進 up_arm; //ペン上げ go_streight(70); //7cm前進 turn_right(95); //90°右旋回 back(60); //7cm後進 down_arm; //ペン下げ go_streight(65); //10cm前進 up_arm; //ペン上げ go_streight(60); //7cm前進 turn_left(95); //90°左旋回 back(170); //19.5cm後進 down_arm; //ペン下げ go_streight(81); //12.5cm前進 up_arm; //ペン上げ } #comment **マクロを使う前のプログラム [#n351153d] #define ARM_TIME 10 sub up_arm( ) { OnFwd(OUT_B);Wait(ARM_TIME);Off(OUT_B); } sub down_arm( ) { OnRev(OUT_B);Wait(ARM_TIME);Off(OUT_B); } task main ( ) { SetPower(OUT_C,0); //モーターパワーC0 down_arm( ); //ペン下げ OnFwd(OUT_A+OUT_C);Wait(113);Off(OUT_A+OUT_C); //17.5cm前進 up_arm( ); //ペン上げ OnFwd(OUT_A+OUT_C);Wait(45);Off(OUT_A+OUT_C); //7cm前進 SetPower(OUT_C,7); //モーターパワーC7 OnFwd(OUT_A);OnRev(OUT_C);Wait(180);Off(OUT_A+OUT_C); //132°右旋回 OnFwd(OUT_A+OUT_C);Wait(60);Off(OUT_A+OUT_C); //10.3cm前進 OnFwd(OUT_A);OnRev(OUT_C);Wait(82);Off(OUT_A+OUT_C); //90°右旋回 OnRev(OUT_A+OUT_C);Wait(80);Off(OUT_A+OUT_C); //7cm後進 down_arm( ); //ペン下げ OnFwd(OUT_A+OUT_C);Wait(127);Off(OUT_A+OUT_C); //19.6cm前進 up_arm( ); //ペン上げ OnFwd(OUT_A+OUT_C);Wait(45);Off(OUT_A+OUT_C); //7cm前進 OnFwd(OUT_A);OnRev(OUT_C);Wait(146);Off(OUT_A+OUT_C); //160°右旋回 OnFwd(OUT_A+OUT_C);Wait(120);Off(OUT_A+OUT_C); //21.7cm前進 OnRev(OUT_A);OnFwd(OUT_C);Wait(55);Off(OUT_A+OUT_C); //70°左旋回 OnRev(OUT_A+OUT_C);Wait(115);Off(OUT_A+OUT_C); //7cm後進 down_arm( ); //ペン下げ OnFwd(OUT_A+OUT_C);Wait(65);Off(OUT_A+OUT_C); //10cm前進 up_arm( ); //ペン上げ OnRev(OUT_A+OUT_C);Wait(10);Off(OUT_A+OUT_C); //3cm後進 OnRev(OUT_A);OnFwd(OUT_C);Wait(88);Off(OUT_A+OUT_C); //90°左旋回 OnRev(OUT_A+OUT_C);Wait(60);Off(OUT_A+OUT_C); //7cm後進 down_arm( ); //ペン下げ OnFwd(OUT_A+OUT_C);Wait(88);Off(OUT_A+OUT_C); //12.5cm前進 up_arm( ); //ペン上げ OnFwd(OUT_A+OUT_C);Wait(70);Off(OUT_A+OUT_C); //7cm前進 OnFwd(OUT_A);OnRev(OUT_C);Wait(95);Off(OUT_A+OUT_C); //90°右旋回 OnRev(OUT_A+OUT_C);Wait(60);Off(OUT_A+OUT_C); //7cm後進 down_arm( ); //ペン下げ OnFwd(OUT_A+OUT_C);Wait(65);Off(OUT_A+OUT_C); //10cm前進 up_arm( ); //ペン上げ OnFwd(OUT_A+OUT_C);Wait(60);Off(OUT_A+OUT_C); //7cm前進 OnRev(OUT_A);OnFwd(OUT_C);Wait(95);Off(OUT_A+OUT_C); //90°左旋回 OnRev(OUT_A+OUT_C);Wait(170);Off(OUT_A+OUT_C); //19.5cm後進 down_arm( ); //ペン下げ OnFwd(OUT_A+OUT_C);Wait(81);Off(OUT_A+OUT_C); //12.5cm前進 up_arm( ); //ペン上げ } ''反省'' 集まる時間や、家のPCに繋ぐための端子がなかったので、書いたプログラムをSAS君にメールで送るという形で作成していきました。そのためロボット製作や調整などをSAS君に任せきりになってしまったところが大きな反省点です。ゴメンね!! -前進や後進についてもサブルーチン(あるいは関数orマクロ)を定義すれば、もう少し見やすいプログラムになると思います。 -- [[松本(教員)]] &new{2005-11-14 (月) 13:50:34}; -時間のあるときに必ず直します。<m(_ _)m> #comment