- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a/A2/課題3左]]
*目次 [#g62be8b8]
#contents
**課題3 [#ya7b973f]
~1.全方向から懐中電灯の方向を探しだし、懐中電灯を狙ってブロックを投げるロボットを製作する。
~2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げるロボットを製作する。
**ロボットの製作・説明 [#t82dca62]
~説明書を参考にしつつ駆動部を本体後方に寄せた。
#ref(SH350091.JPG)
#ref(SH350092.JPG)
~前方には投てき用のモーターを本体下部に配置した。
#ref(SH350090.JPG)
~投てき用のアームは長めに作り、ブロックを装填する部分では上下から挟みこむ形にした。
#ref(arm.JPG)
**プログラムの製作・説明 [#l812019b]
***プログラム1 (T.I) [#fbd1bf89]
#defineT_T 500
#defineT_T 500 //最初の旋回時間
task main
{
int l_m=0;
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetPower(OUT_C,5);
ClearTimer(0);
while(FastTaimer(0)<T_T)
int l_m=0; //光センサーの最大値に0を代入
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサー
SetPower(OUT_C,5); //投てき用モーター出力5
ClearTimer(0); //タイマーリセット
while(FastTaimer(0)<T_T) // 最も明るい方向を検索
{
if(SENSOR_1>l_m){
if(SENSOR_1>l_m){ //センサー1>光センサーの最大値のとき
OnFwd(OUT_A);
l_m=SENSOR_1;
l_m=SENSOR_1; //最大値を更新
}
else{
OnRev(OUT_A);
until(SENSOR_1);
Off(OUT_A);
OnFwd(OUT_C);
else{ OnFwd(OUT_A); //その他の場合何もしない
}
}
OnRev(OUT_A); //1周したら
until(SENSOR_1); //明るさ最大の方向まで再度旋回
Off(OUT_A); //停止
OnFwd(OUT_C); //投げる
Wait(25);
Off(OUT_C);
}
}
} //終わり
**感想・反省 [#w3c891c0]
~明るさ最大の方向を見つけてその方向を向かせるのは簡単だったが、投げてもあまり飛ばないのが欠点。ギヤ比やアームの長さを調整してみてもなかなか上手くいかなかった。
(T.I)
**コメント欄 [#yd147a56]
ご自由にお書きください。
- 更新しました -- [[T.I]] &new{2009-07-23 (木) 15:58:37};
#comment