作成者 Harada (コンパス 今井)
//制作 harada #define back 20 //転回時に後退する時間 #define rotate 60 //転回時の回転時間 task main () { SetSensor(SENSOR_1, SENSOR_TOUCH); //センサ種別指定(左タッチセンサ) SetSensor(SENSOR_3, SENSOR_TOUCH); //センサ種別指定(右タッチセンサ) OnFwd(OUT_A+OUT_C); //壁に接触するまで前進 until(SENSOR_1 == 1); while(true) //無限ループ { if(SENSOR_3 == 0) { if(SENSOR_1 == 1) //壁から離れたとき { OnFwd(OUT_A+OUT_C); until ((SENSOR_1 == 0) || (SENSOR_3 == 1)) ; } else //壁に当たったとき { OnFwd (OUT_C);Float(OUT_A); until ((SENSOR_1 == 1) || (SENSOR_3 == 1)) ; } } else //足の部分など、回転するとき { OnRev (OUT_A+OUT_C); Wait(back); Off (OUT_A+OUT_C); OnFwd (OUT_A); OnRev (OUT_C); Wait(rotate); } } }
バンパーを高い所と低い所の両方に対応できるように二重にして、スムーズに進むようにローラーも付けました。プログラムでは、常に壁に当たっているようにしたいため、二つにタッチセンサーを使うことにより、全く当たってない時、片方当たっているとき、両方当たっている時とで条件を設定しました。壁に引っかかったり、曲がりすぎてしまったりして苦労しました。