[[2009a]] *目次 [#lce279f3] #contents *課題3/懐中電灯に向かってホイールを投げるロボット [#f9730b01] **メンバー紹介 [#s778b942] •しゅうた... •ゆうき... **課題内容 [#iba3b268] インストの「top secret」を参考にして、白いホイールを投げるロボットを作成し、以下の動きをするようにプログラムを作成せよ。 1. 全方向から懐中電灯の方向を探しだし、懐中電灯を狙ってブロックを投げる。 方向を定めたのち、懐中電灯の30cm以内に近づかない範囲で必要な距離を移動してもよい。懐中電灯は動かさないが、いろいろな距離や方向にある懐中電灯に対応できるロボットにすること。 2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げる。 3. 懐中電灯を動かしたとき懐中電灯に向かって進み、見失った時には再び全方向から懐中電灯を探しだす。7秒以上追尾できたら懐中電灯に向かってブロックを投げる。 懐中電灯の代わりに携帯のライトなどを利用してもよい。モータ、光センサ、タッチセンサはそれぞれ2個まで使用可。ただし、平面的な方向だけでなく懐中電灯の高さまで含めた方向を探す場合にはモータを3個使用してもよい。 **ロボットの作成 [#fc293318] ***土台部分 [#v7185453] ***光センサー [#gda5c6e4] ***ホイールを投げる部分 [#dcbd9e39] **プログラム [#kf08ed71] ***しゅうた [#l0ca3a26] ***ゆうき [#h5a83e24] プログラム内容→2. 懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めれば一定の距離(懐中電灯から30cm以上離れた距離)まで近づいて懐中電灯を狙ってブロックを投げる。 //2つのしきい値を決定 #define BORDER_1 40 //光を検知するしきい値 #define BORDER_2 40 //40cmまで近づいたことを検知するしきい値 // ループから抜け出すためのフラグ用変数 int flag = 0; task main (){ SetSensor ( SENSOR_1, SENSOR_LIGHT ); //センサー1は光センサーですよ while ( flag == 0 ){ //投げるまで(合図があるまで)ループする if ( SENSOR_1 < BORDER_1 ){ //正面が暗かったら、 OnRev(OUT_A); //モーターを正回転 }else{ //正面が明るければ、 OnFwd(OUT_A); //モーターを逆回転 } //end if if ( SENSOR_1 > BORDER_2 ){ //じゅうぶん近づいたら、 Off(OUT_A); //前進するのを止めて、 OnFwd(OUT_C); //投げつける。 Wait(15); OnRev(OUT_C); //腕を元の位置にもどす。 Wait(10); Off(OUT_C); flag++; //ループ終了の合図。 } //end if } //end while } //end task main **創意工夫した点 [#v91494d5] **感想 [#p6e4c4a4] ***しゅうた [#i274ea26] ***ゆうき [#fdde78dc] *コメント [#l0c54589] このページに関する御意見•御感想などありましたらお書きくださいm(_ _)m #comment