2015a/Member/solo/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015a/Member]]
*課題について [#c48469ea]
今回の課題はロボットを一回転させ、懐中電灯のある方にボールをシュートする。明るさのピークを正確に見つけることが重要である。
* ロボットについて [#o136ba17]
&ref(./_10501.jpg,20%);
&ref(./_10502.jpg,20%);
&ref(./_10503.jpg,20%);
&ref(./_10504.jpg,20%);
&ref(./_10505.jpg,20%);
&ref(./_10506.jpg,20%);
** ロボットの基本構造 [#y1f4e172]
本体は課題2を参照(課題2の時より少し軽量化している)。アームは新しく作った。ボールを上から軽く押さえつけ、左右に移動しても両端のブロックがアームからボールが離れないようにしている。後ろに下がってもアームの押さえつける角度からボールが離れることはない。
* プログラムについて[#ra2fdf9b]
・定義
#define Time 380 //一回転する時間
#define spin_R OnFwd(OUT_A); OnRev(OUT_C); //右回転
#define spin_L OnRev(OUT_A); OnFwd(OUT_C); //左回転
#define shoot OnRev(OUT_B); Wait(20); Off(OUT_B); //シュート
・メインプログラム:
変数をおき、回転しながら最も明るい点を探す。
task main() {
SetSensor(SENSOR_2,SENSOR_LIGHT);
int most_light = 0; //最も明るい時のしきい値を記録するための変数
ClearTimer(0);
while(FastTimer(0) <= Time){ //一回転して最も明るい点を見つける。
spin_R; //右回りで一回転
if(SENSOR_2 > most_light){ //最も明るければそのしきい値を記録する
most_light = SENSOR_2;
}
}
Off(OUT_AC); //小休止
Wait(200);
先程と違い、逆回転する。そして、最も明るい点にシュートする
ClearTimer(1);
while(FastTimer(1) <= Time){ //逆回転して最も明るい点で止まり、シュートする
spin_L; //左回りで一回転
if(SENSOR_2 > most_light - 1){ //最も明るいなら停止してシュート
Off(OUT_AC);
Wait(100);
shoot;
Off(OUT_AC);
Wait(400);
}
}
Off(OUT_AC);
}
*反省 [#l2f45834]
**よかった点 [#q96eb6f2]
・懐中電灯に向かってシュートできた。
・停止を入れることで安定して動かせた。
**悪かった点 [#kefdfa61]
・車の動きが少し早かったのでシュートする位置が少しずれてしまった。
終了行:
[[2015a/Member]]
*課題について [#c48469ea]
今回の課題はロボットを一回転させ、懐中電灯のある方にボールをシュートする。明るさのピークを正確に見つけることが重要である。
* ロボットについて [#o136ba17]
&ref(./_10501.jpg,20%);
&ref(./_10502.jpg,20%);
&ref(./_10503.jpg,20%);
&ref(./_10504.jpg,20%);
&ref(./_10505.jpg,20%);
&ref(./_10506.jpg,20%);
** ロボットの基本構造 [#y1f4e172]
本体は課題2を参照(課題2の時より少し軽量化している)。アームは新しく作った。ボールを上から軽く押さえつけ、左右に移動しても両端のブロックがアームからボールが離れないようにしている。後ろに下がってもアームの押さえつける角度からボールが離れることはない。
* プログラムについて[#ra2fdf9b]
・定義
#define Time 380 //一回転する時間
#define spin_R OnFwd(OUT_A); OnRev(OUT_C); //右回転
#define spin_L OnRev(OUT_A); OnFwd(OUT_C); //左回転
#define shoot OnRev(OUT_B); Wait(20); Off(OUT_B); //シュート
・メインプログラム:
変数をおき、回転しながら最も明るい点を探す。
task main() {
SetSensor(SENSOR_2,SENSOR_LIGHT);
int most_light = 0; //最も明るい時のしきい値を記録するための変数
ClearTimer(0);
while(FastTimer(0) <= Time){ //一回転して最も明るい点を見つける。
spin_R; //右回りで一回転
if(SENSOR_2 > most_light){ //最も明るければそのしきい値を記録する
most_light = SENSOR_2;
}
}
Off(OUT_AC); //小休止
Wait(200);
先程と違い、逆回転する。そして、最も明るい点にシュートする
ClearTimer(1);
while(FastTimer(1) <= Time){ //逆回転して最も明るい点で止まり、シュートする
spin_L; //左回りで一回転
if(SENSOR_2 > most_light - 1){ //最も明るいなら停止してシュート
Off(OUT_AC);
Wait(100);
shoot;
Off(OUT_AC);
Wait(400);
}
}
Off(OUT_AC);
}
*反省 [#l2f45834]
**よかった点 [#q96eb6f2]
・懐中電灯に向かってシュートできた。
・停止を入れることで安定して動かせた。
**悪かった点 [#kefdfa61]
・車の動きが少し早かったのでシュートする位置が少しずれてしまった。
ページ名: