[[2007b/A1]]

* 目次 [#yadc5925]

-[[2007b/A1/ロボットの説明]]
#contents

-文字を書く
* ロボットの説明 [#f84c3395]

--[[2007b/A1/『本』を書くプログラム]]
 私たちのロボットは後輪駆動で、ペンの上げ下げはモーターの回転に直接つなげた棒にくっつけたペンが上がったり下がったりすることで行われます。

--[[2007b/A1/『市』を書くプログラム]]
&ref(IMG_0184)

-製作日誌
 モーターが右側についている為、バランスをとる為に反対側にただの飾りにしかならないタイヤがついています。

--[[2007b/A1/苦労した点 by左組]]

--[[2007b/A1/工夫した点 by左組]]
* 「市」を書くプログラム [#o5846baa]

#define MOVE_TIME 270                    // MOVE_TIMEという定数を定義(値は270)

 task main()
 {
   OnFwd(OUT_A+OUT_B+OUT_C); // chokushin
   Wait(40); //
   OnRev(OUT_B); //pen hanasu
   OnFwd(OUT_A+OUT_C); //chokushin
   Wait(55); //
   OnRev(OUT_C); //90kaiten
   Wait(MOVE_TIME); //
   OnRev(OUT_A+OUT_C); //koutai
   Wait(20); //
   OnFwd(OUT_B); //pen tsukeru
   OnRev(OUT_A+OUT_C); //chokushin
   Wait(160); //
   OnRev(OUT_B); //pen hanasu
   OnFwd(OUT_A+OUT_C); //chokushin
   Wait(120+55); //
   OnRev(OUT_A); //90kaiten
   Wait(MOVE_TIME); //
   OnRev(OUT_C); //koutai
   Wait(60); //
    OnFwd(OUT_A+OUT_B+OUT_C); // chokushin  pem tsukeru
   Wait(80); //
   OnRev(OUT_A+OUT_B+OUT_C); //koutai  pen hanasu
   Wait(55); //
   OnFwd(OUT_A); //90kaiten
   Wait(MOVE_TIME); //
   OnRev(OUT_A); //koutai
   Wait(100); //
   OnFwd(OUT_B); //pen tsukeru
   OnRev(OUT_A+OUT_C); //koutai 
   Wait(80); //
   OnRev(OUT_B); //pen hanasu
   OnRev(OUT_A+OUT_C); //koutai 
   Wait(55); //
   OnFwd(OUT_A); //90kaiten
   Wait(MOVE_TIME); //
   OnRev(OUT_A); //koutai
   Wait(100); //
   OnRev(OUT_A+OUT_C); //koutai
   OnFwd(OUT_B); //pem tsukeru
   Wait(80); //
   OnRev(OUT_B); //pen hanasu
   OnRev(OUT_A+OUT_C); //koutai
   Wait(55); //
   OnFwd(OUT_A); //90kaiten
   Wait(MOVE_TIME); //
   OnRev(OUT_A); //koutai
   Wait(100); //
   OnRev(OUT_A+OUT_C); //koutai
   Wait(40+55); //
   OnFwd(OUT_A); //90kaiten
   Wait(MOVE_TIME); //
   OnRev(OUT_A); //koutai
   Wait(300); //
   OnFwd(OUT_A+OUT_B+OUT_C); // chokushin  pem tsukeru
   Wait(260); //
   Off(OUT_A+OUT_B+OUT_C); //shuuryo
 }


* 「本」を書くプログラム [#pf9bd47b]

#define MOVE_TIME 270                    // MOVE_TIMEという定数を定義(値は270)

task main()
{
    OnRev(OUT_B);
    Wait(10);
    OnFwd(OUT_A+OUT_C);
    Wait(30);
    OnFwd(OUT_B);
    Wait(200);
    OnRev(OUT_B);
    Wait(30);
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(MOVE_TIME);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnFwd(OUT_A+OUT_C);
    Wait(120);
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(MOVE_TIME);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnFwd(OUT_A+OUT_C);
    Wait(160);
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(MOVE_TIME);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnFwd(OUT_A+OUT_C);
    Wait(60);
    OnFwd(OUT_B);
    Wait(200);
    OnRev(OUT_B);
    Wait(60);
    OnRev(OUT_A+OUT_C);
    Wait(140);
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnFwd(OUT_A);
    OnRev(OUT_C);
    Wait(MOVE_TIME/2);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnRev(OUT_A+OUT_C);
    Wait(30);
    OnFwd(OUT_A+OUT_C);
    Wait(30);
    OnFwd(OUT_B);
    Wait(140);
    OnRev(OUT_B);
    Wait(60);
    OnRev(OUT_A+OUT_C);
    Wait(200);
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(MOVE_TIME);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnRev(OUT_C+OUT_A);
    Wait(30);
    OnFwd(OUT_A+OUT_C);
    Wait(30);
    OnFwd(OUT_B);
    Wait(140);
    OnRev(OUT_B);
    Wait(60);
    OnRev(OUT_A+OUT_C);
    Wait(100);
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(MOVE_TIME/2);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnRev(OUT_C+OUT_A);
    Wait(40);
    OnFwd(OUT_B);
    Wait(40);
    Off(OUT_A+OUT_C+ OUT_B);
}

* 苦労した点 [#ieeb2793]

-部品の制限

 ロボットを作るにあたって、ペンを上げ下げする為の部品と、ロボット自体を動かす為の部品がなくてはいけないのですが、私たちのロボットはペンを上げ下げする部品にギアを使っている為に、車輪を回すのに丁度良い部品がなくなってしまいました。

-重心の偏り

 このロボットは、ペンを上げ下げするためのモーターが右に偏っている為に、必要最低限の部品だけにした場合右に傾いてしまって、全身する時にだんだんと右にカーブしてしまいます。

-コードの不調

 動作の確認中に、コードが使えなくなってしまい、長いコードを使わなければならなくなってしまい、その処理に苦労しました。

-ペンの位置と回転軸のずれ

 ペンの位置がロボットの回転軸がずれているので、ロボットの中心で線をイメージして動かすとうまく文字にならないので、そこをうまくコントロールするのに苦労しました。

* 工夫した点 [#r44ba0c3]

-後輪駆動

 このロボットはペンを上げ下げする為にギアを使っていて、四つの車輪を同じギアで動かすことはできません。なので、前輪を動かすことは諦めて、後輪のみを動かすことにしました。

-直角に曲がる

 ペンを下ろしたままでカーブをした場合、ペンの位置を軸にして回転している訳ではないので、うまく直角に曲がる線は書けないので、したのプログラムを使って直角に曲がりました。


#define MOVE_TIME 270
task main()
 {
    OnFwd(OUT_A+OUT_C);
    OnRev(OUT_B);
    Wait(55);
    OnRev(OUT_A);
    OnFwd(OUT_C);
    Wait(MOVE_TIME);
    OnRev(OUT_A+OUT_C+ OUT_B);
    Wait(100);
    OnFwd(OUT_A+OUT_C);
    Wait(100);
    Off(OUT_A+OUT_C+ OUT_B);
    Wait(10);
}


-骨組と肉付け

 プログラムに何かミスがあった場合にわかりやすくする為に、まずはカーブでのずれなどは気にせずに作ったプログラミングを用意し、そのあとに上に書いたような直角に曲がるラインを書くためのプログラムを入れていくという方法でプログラムを作りました。

[[2007b/A1]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS