[[2006b/A6/R Room/mission 2]] 制作者(TAKA) #define THRESHOLD 40 task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); // センサー1を光センサーに SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー2をタッチセンサーに SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー3を光センサーに OnFwd(OUT_A+OUT_C); //前進 while(true){ if(SENSOR_3>THRESHOLD) //センサー3の値が40以上になったら { Off(OUT_A); //A側のタイヤストップ OnFwd(OUT_C); //C側のタイヤ正回転 } if(SENSOR_1>THRESHOLD) //センサー1の値が40以上になったら { Off(OUT_C); //C側のタイヤストップ OnFwd(OUT_A); //A側のタイヤ正回転 } else(OUT_A+OUT_C); //それ以外は前進 if(SENSOR_2==1) //センサー2が反応したら (ぶっつかって避ける) { OnRev(OUT_A+OUT_C); //後退 Wait(50); Off(OUT_A+OUT_C); OnFwd(OUT_A); //A側正回転 Wait(20); OnFwd(OUT_C); //C側正回転 → 前進 Wait(50); Off(OUT_A+OUT_C); OnFwd(OUT_C); //C側正回転 Wait(35); OnFwd(OUT_A); //A側正回転 → 前進 } } } *改善版 [#za919cc6] #define THRESHOLD 48 task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1を光センサーに SetSensor(SENSOR_3,SENSOR_LIGHT); //センサー2をタッチセンサーに SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー3を光センサーに OnFwd(OUT_A+OUT_C); //前進 while(true){ if(SENSOR_1<THRESHOLD) if(SENSOR_1<THRESHOLD) //センサー1の値が48以下になったら { Off(OUT_A); OnFwd(OUT_C); Off(OUT_A); //A側のタイヤストップ OnFwd(OUT_C); //C側のタイヤ正回転 } else if(SENSOR_3<THRESHOLD) else if(SENSOR_3<THRESHOLD) //それ以外でセンサー3の値が48以下になったら { Off(OUT_C); OnFwd(OUT_A); Off(OUT_C); //C側のタイヤストップ OnFwd(OUT_A); //A側のタイヤ正回転 } else(OUT_A+OUT_C); if(SENSOR_2==1) else(OUT_A+OUT_C); //それ以外前進 if(SENSOR_2==1) //センサー2が反応したら (ぶつかったら右に避けて進む) { OnRev(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); //後退 Wait(60); Off(OUT_A+OUT_C); OnFwd(OUT_A); Wait(60); OnFwd(OUT_C); Off(OUT_A+OUT_C); OnFwd(OUT_A); //A側正回転 Wait(60); OnFwd(OUT_C); //C側正回転 → 前進 Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_C); Off(OUT_A+OUT_C); OnFwd(OUT_C); //C側正回転 Wait(110); OnFwd(OUT_A); OnFwd(OUT_A); //A側正回転 → 前進 } } } -動きをスムーズにするようにこちらのプログラムも『else if』を使いました。あと、おなじく避けるときのプログラムも少しいじりました。