- 履歴一覧
- ソース を表示
- 2015a/Member/Y.H/Mission1 は削除されています。
- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#g158bac4]
#contents
*課題について [#la48239b]
課題1は簡単な図形を描くロボットの製作。
今年度は自分の名前に使われている七画以上の文字、ない場合は組み合わせて七画以上になる文字をA4用紙一枚の中に書く書道ロボットを目指す。ただし、筆順は無視してよい。ペン以外はキットの部品を使うこと。プログラムは読み手わかりやすく、かつ簡潔に書くこと。
* ロボット本体について [#jb85d4d2]
ロボットは二つのモーター(B,C)を移動に用いた。左右に曲がることができる。もっとも初めに組み立てたロボットを基本とする。
ペンの上げ下げはもう一つのモーター(A)で行う。モーターにアームを取り付け、そのアームにペンを取り付けた。モーターの回転方向を歯車で変え、ペンはロボット本体の液晶側で跳ね上がるような形になっている。
ペンは筆ペンを用いた。これを輪ゴムで本体に留めたが、取り付け方の関係でペンは斜めに取り付けられている。また、ペンを取り付ける際、ペン先が紙に当たるまでの長さを調節してできるだけ二つのタイヤの中心になるようにした。
* プログラムについて [#y87a9378]
まず、プログラムを書く際に気を付けたのが、変数の変更を行いやすくすることである。その前の三角形や四角形、星を描くプログラムを書く際にも、電池の消耗やタイヤと床面との摩擦の大きさによって出力が変化することがわかっていたからである。
また、書こうとしていた文字の画数が多かったため、最初から三つのグループに分けて少しずつ調整しながら書くことにした。そして、それらをつなぐため指標となるプログラムをはじめに書いた。
**グループ分け [#dd2fa9f0]
**出力調整 [#m83f227c]
回転する角度をあわせる
task main()
{
OnFwd(OUT_C,-40);
Wait();
Off(OUT_BC); //だいたい一回転するように時間の長さを調整
Wait(3000);
OnFwd(OUT_B,);
OnFwd(OUT_C,);
Wait(600);
Off(OUT_BC); //90度くらい回るようにモーターの出力で調整
}
進む距離を合わせる
task main()
{
OnFwdSync(OUT_BC,,0);
Wait(1600); //長めに進む
Off(OUT_BC);Wait(3000); //記録のための時間
OnFwdSync(OUT_BC,,0);
Wait(800); //少し長めに進む
Off(OUT_BC);Wait(3000); //記録のための時間
OnFwdSync(OUT_BC,,0);
Wait(400); //短めに進む
Off(OUT_BC);
}
少し長めに進んだ距離や、短めに進んだ距離は書く文字のなかで使われる。
**定義 [#he6007e9]
#define go(s) OnFwdSync(OUT_BC,,0);Wait(s);sofa;
#define back(t) OnRevSync(OUT_BC,,0);Wait(t);sofa;
#define turn_left(u) OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);Wait(u);sofa;
#define turn_right(v) OnRev(OUT_B,SPEED);OnFwd(OUT_C,SPEED);Wait(v);sofa;
#define SPEED
ロボットの液晶側を正面と仮定して前後左右を決めた。goとbackは二か所にモーターの出力を入れる。turn_leftとturn_leftはSPEEDの後ろに一か所モーターの出力を入れる。このようにするとロボットを動かす時間だけが必要になる。
#define up OnFwd(OUT_A,30);Wait(200);sofa;
#define down OnFwd(OUT_A,-10);Wait(300);sofa;
ペンの上げ下げを行う。この数値の調整はグループの人のを借りた。
#define sofa Off(OUT_ABC);Wait(1000);
すすむ距離や回転の調整をより行いやすくするために書いた。本当はクッションという名前にしようと思ったのだが、長いのと綴りがわからなかったのでで、ソファという名前にした。
**本文 [#b5ae7d7a]
一つにまとめたものがどこかへ行ってしまったので、途中切れている。
また、二つ目と三つ目に書いたプログラムは電池の調節をしなくてもよかったので、まとめてある。