*&size(40){〜第2回課題〜}; [#t2a38d64] **タッチセンサ(壁に沿って動くロボット)[#ac107e3e] ***壁にぶつかったら後退して方向転換するプログラム [#g74e8d55] task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); //センサの宣言 OnFwd(OUT_A+OUT_C); //センサが壁にあたるまで前進 until(SENSOR_1 == 1); off(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); //センサが壁にあたったら後退 Wait(50); OnFwd(OUT_A); //90度回転 OnRev(OUT_C); Wait(150); Off(OUT_A+OUT_C); //停止 } [[この課題の詳細はこちらへ>2005/C6/課題2右]] ***感想 [#f1f83fe0] 壁に沿って動くロボットを作るうえで苦労したことは、タッチセンサを取り付ける位置であったり、適切なバンパーの長さにすることであった。取り付ける位置を誤るとセンサが壁にあたらなかったりしたし、バンパーが長すぎると角にひっかかって曲がりきれないことがあった。 **光センサ(黒線上を動くロボット)[#ce82fcdc] ***プログラム [#y95d7e30] 光センサ1個の場合 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); //センサの宣言 while(true) //無限に繰り返す { if(SENSOR_2<40) { Off(OUT_C); //センサが黒線上にあるとき左折 OnRev(OUT_A); OnFwd(OUT_C); }else{ Off(OUT_A); //黒線上からはずれると右折 OnRev(OUT_C); OnFwd(OUT_A); } } } 光センサ2個の場合 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサの宣言 SetSensor(SENSOR_3,SENSOR_LIGHT); //センサの宣言 while(true) //無限に繰り返す { //センサ1、センサ2共に黒線上にあるとき前進する if(SENSOR_1<40) { OnRev(OUT_C); }else{ OnFwd(OUT_C); //センサ1が黒線上をはずれると左折 } if(SENSOR_3<40) { OnRev(OUT_A); }else{ OnFwd(OUT_A); //センサ2が黒線上をはずれると右折 } } } ***感想 [#w2ae2cf2] 光センサ1個の場合では動きが遅かったが、光センサ2個使用すことによってずいぶん速くなった。 **コメントはこちらへ [#h3ecc8d6] #comment