- 追加された行はこの色です。
- 削除された行はこの色です。
[[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]]