学習ノート Hypodytes rubripinnis

課題1:字を書くロボット課題1右

''アクセス数:今日1 総数659   最終更新日:2005-12-14 (水) 01:17:07''

『右』を書くプログラム

作成者:Hypodytes rubripinnis

マクロを使ったプログラム掲載しました!

マクロを使って短くしたプログラム

#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;             //ペン上げ
}

マクロを使う前のプログラム

#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マクロ)を定義すれば、もう少し見やすいプログラムになると思います。 -- 松本(教員)? 2005-11-14 (月) 13:50:34
  • 時間のあるときに必ず直します。<m(_ _)m>


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-14 (水) 01:17:07 (5003d)