#contents *課題3 懐中電灯に向かってブロックを投げるロボット [#heba1f56] **課題3の内容 [#o303b37b] 1.全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。 3.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。 *メンバー紹介 [#e2b0d0cc] わかぐりーん/ろしあんぶるー *ロボット紹介 [#u8d505a1] *プログラム [#n8a6fe32] **1つ目のプログラム:全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。 [#bcf30622] #define THRESHOLD 60 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);sensor1 光センサであると宣言 SetSensor(SENSOR_3,SENSOR_LIGHT);sensor3 光センサであると宣言 while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)){ OnFwd(OUT_A); Off(OUT_C);} Off(OUT_A); OnRev(OUT_C); Wait(20); Off(OUT_C);} **2つ目のプログラム:懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。 [#kd5e34b8] #define TURN_TIME 20 //動く時間を設定 #define THRESHOLD 40 //閾値の設定 sub turn_right() //右回りに動く時間を定義 { OnFwd(OUT_A); Wait(TURN_TIME); Off(OUT_A); } sub turn_left() //左回りに動く時間を定義 { OnRev(OUT_A); Wait(TURN_TIME); Off(OUT_A); } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1を光センサに SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3を光センサに while (true) { if ((SENSOR_3 > THRESHOLD) && (SENSOR_1 > THRESHOLD)) //センサの1と3が閾値を超えたら左に { turn_left(); } if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) //センサ1は閾値を超えず、センサ3が閾値を越えた場合、右に { turn_right(); } if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) //センサ1が閾値を超え、センサ3が閾値を超えない場合、左に { turn_left(); } if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) センサの1と3がともに閾値を超えない場合、右に回って光を探す { turn_right(); } } Off(OUT_A); } *苦労した点 [#bdd3c594] top secretにあった形でロボを作っていたら、一方方向にしか回れない事が分かったため、 それを両方に回れるようにすることに苦労した。 *課題点 [#sad43e7e] *まとめ [#m6609d64]