2015a/Member/swimy/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
* 使用したロボ [#t6abc8c0]
車体の中心にペンを入れることでロボの軌跡と書きたい文字がリンクするようにした。
使った車体のベースは基本プログラムで使用したものと同じもので、中心にペンを入れたいから本体は縦にしてバランスが取れるように積んだ。
端子Bでペンの上げ下げ、端子A,Cでタイヤを動かし前進、後退はもちろん回転もペン先を中心に小回りが利くようにした。
ペンの上げ下げは端子Bにつないだタイヤとどこにもつながってないただ回るだけの2つのタイヤではさみ端子Bのモーターを0,1秒回せばペンが上がり逆回転すればペンを下すようにした。原理は野球なんかのピッチングマシンのそれをイメージしてくれれば大体あっている。
ペンは今回、サインペンを使用したが、市販のものであれば基本的にはどれにも対応している
#ref(2015a/Member/swimy/Mission1/IMG_3913.JPG,50%,文字を書くロボット)
*プログラム [#ge4a8526]
**「林」の文字を書く [#l6a1df5e]
#define TURN_TIME 78//90°回転する時間を定義する
#define TURN_HALF 39//45°回転する時間を定義する
#define rise OnFwd(OUT_B);Wait(10);Off(OUT_B);//ペンを上げる動作を「rise」と定義する
#define down OnRev(OUT_B);Wait(10);Off(OUT_B);//ペンを下す動作を「down」と定義する
task main()
{
repeat(2){//「林」を書きたいので「木」を2回繰り返すようにする
OnFwd(OUT_AC);Wait(100);rise;//1画目
OnRev(OUT_AC);Wait(50); OnFwd(OUT_A);OnRev(OUT_C);Wait(TURN_TIME);
down;OnFwd(OUT_AC);Wait(200);rise;//2画目
OnRev(OUT_AC);Wait(180);OnFwd(OUT_A);OnRev(OUT_C);Wait(TURN_HALF);
down;OnFwd(OUT_AC);Wait(75);rise;//3画目
OnRev(OUT_AC);Wait(75);OnRev(OUT_A);OnFwd(OUT_C);Wait(TURN_TIME);
down;OnFwd(OUT_AC);Wait(75);rise;//4画目
OnRev(OUT_AC);Wait(75);OnRev(OUT_A);OnFwd(OUT_C);Wait(TURN_HALF);OnFwd(OUT_AC);Wait(60);//5画目へ
}
Off(OUT_AC);
}
*課題を振り返ってみて [#e6e0be6c]
今回のプログラムで目標である字を書くということは達成できた。しかし、このロボだと細かな作業には限界があり、文字の大きさはA4ぎりぎりになってしまった。アームを作ってそれを動かすほうが今回の課題としては最適だったと思う。プログラムとしてはdefineをもっと使っていけばこんな長いものにはならずにスマートにできたはずだ。これらの反省点は次回以降に生かしていきたい
終了行:
[[2015a/Member]]
* 使用したロボ [#t6abc8c0]
車体の中心にペンを入れることでロボの軌跡と書きたい文字がリンクするようにした。
使った車体のベースは基本プログラムで使用したものと同じもので、中心にペンを入れたいから本体は縦にしてバランスが取れるように積んだ。
端子Bでペンの上げ下げ、端子A,Cでタイヤを動かし前進、後退はもちろん回転もペン先を中心に小回りが利くようにした。
ペンの上げ下げは端子Bにつないだタイヤとどこにもつながってないただ回るだけの2つのタイヤではさみ端子Bのモーターを0,1秒回せばペンが上がり逆回転すればペンを下すようにした。原理は野球なんかのピッチングマシンのそれをイメージしてくれれば大体あっている。
ペンは今回、サインペンを使用したが、市販のものであれば基本的にはどれにも対応している
#ref(2015a/Member/swimy/Mission1/IMG_3913.JPG,50%,文字を書くロボット)
*プログラム [#ge4a8526]
**「林」の文字を書く [#l6a1df5e]
#define TURN_TIME 78//90°回転する時間を定義する
#define TURN_HALF 39//45°回転する時間を定義する
#define rise OnFwd(OUT_B);Wait(10);Off(OUT_B);//ペンを上げる動作を「rise」と定義する
#define down OnRev(OUT_B);Wait(10);Off(OUT_B);//ペンを下す動作を「down」と定義する
task main()
{
repeat(2){//「林」を書きたいので「木」を2回繰り返すようにする
OnFwd(OUT_AC);Wait(100);rise;//1画目
OnRev(OUT_AC);Wait(50); OnFwd(OUT_A);OnRev(OUT_C);Wait(TURN_TIME);
down;OnFwd(OUT_AC);Wait(200);rise;//2画目
OnRev(OUT_AC);Wait(180);OnFwd(OUT_A);OnRev(OUT_C);Wait(TURN_HALF);
down;OnFwd(OUT_AC);Wait(75);rise;//3画目
OnRev(OUT_AC);Wait(75);OnRev(OUT_A);OnFwd(OUT_C);Wait(TURN_TIME);
down;OnFwd(OUT_AC);Wait(75);rise;//4画目
OnRev(OUT_AC);Wait(75);OnRev(OUT_A);OnFwd(OUT_C);Wait(TURN_HALF);OnFwd(OUT_AC);Wait(60);//5画目へ
}
Off(OUT_AC);
}
*課題を振り返ってみて [#e6e0be6c]
今回のプログラムで目標である字を書くということは達成できた。しかし、このロボだと細かな作業には限界があり、文字の大きさはA4ぎりぎりになってしまった。アームを作ってそれを動かすほうが今回の課題としては最適だったと思う。プログラムとしてはdefineをもっと使っていけばこんな長いものにはならずにスマートにできたはずだ。これらの反省点は次回以降に生かしていきたい
ページ名: