- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*目標 [#e227aa1a]
半径1m以内にある懐中電灯を探して、懐中電灯にピンポン玉を当てるロボットを製作。
*ロボット本体 [#lfcf5fe1]
課題2とほぼ同じ。[[課題2ロボット:http://yakushi.shinshu-u.ac.jp/robotics/?2015a%2FMember%2Fshuwachan%2FMission2#l5d3a1be]]
変更点はライントレーサーの向き。
変更点はライントレーサーの向きを前向きにして、前方の明るさを認識できる様にした。
&ref(IMG_0607.JPG);
*プログラム [#g973589c]
**定義 [#j3a73b79]
旋回のみ。
#define turn_left OnFwd(OUT_C);OnRev(OUT_A)// 左旋回
#define turn_right OnFwd(OUT_A);OnRev(OUT_C)// 右旋回
**プログラム [#q7e1d0ea]
360度以上回転して明るさの最大値を探し、その方向を向く。そして、ボールをシュートする。
task main()
{
SetSensor(SENSOR_3,SENSOR_LIGHT);
int lightsensor=0;
int d_max=0;
int lightsensor=0; // ライトセンサーの値を入力
int d_max=0; // 最大値までの時間を入力
ClearTimer(0); // タイマーをリセット
turn_left; //旋回始め
while (FastTimer(0) < 330) { // 設定した秒数旋回する
if (SENSOR_3 > lightsensor){ // 明るさの最大値を探す
lightsensor=SENSOR_3;
d_max=FastTimer(0);
if (SENSOR_3 > lightsensor){ // センサーの最大値を超えたら
lightsensor=SENSOR_3; // 明るさの値を更新し
d_max=FastTimer(0); // 時間も更新
}
}
Off(OUT_AC);Wait(100);
turn_right; // スタート位置に戻る
Wait(330);
Off(OUT_AC);
turn_left;
Wait(d_max); // スタート位置から最大値までの秒数分、旋回
Off(OUT_AC);
OnRev(OUT_B); Wait(90); // アームを開く
Off(OUT_B);
OnFwd(OUT_AC); Wait(50); // ボールをシュート
OnRev(OUT_AC); Wait(50);
Off(OUT_AC);
}
*考察・感想 [#q423d21b]
今回の課題は前回のロボットをほぼそのまま使えたので良かった。ラインをトレースするだけでなく光に向かって走行できることがわかった。最大値を探すということはいいアイディアだと思った。
今回の課題は前回のロボットをほぼそのまま使えたので良かった。明るさの最大値を探すということはいいアイディアだと思った。