- 履歴一覧
- ソース を表示
- 2005/A5/学習ノート Marbled Rockfish/『右』を書くプログラム は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
***[[学習ノート Marbled Rockfish>2005/A5/学習ノート Marbled Rockfish]] [#k8b982c5]
***課題1:字を書くロボット[[課題1右>2005/A5/課題1右]] [#y9c2d987]
*『右』を書くプログラム [#nc79a922]
作成者:Marbled Rockfish
**&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