- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006b/A6/R Room/mission 2]]
制作者(TAKA)
#define THRESHOLD 40
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_3>THRESHOLD)
if(SENSOR_3>THRESHOLD) //センサー3の値が40以上になったら
{
Off(OUT_A);
OnFwd(OUT_C);
Off(OUT_A); //A側のタイヤストップ
OnFwd(OUT_C); //C側のタイヤ正回転
}
if(SENSOR_1>THRESHOLD)
if(SENSOR_1>THRESHOLD) //センサー1の値が40以上になったら
{
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);
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_A);
OnRev(OUT_A+OUT_C); //後退
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_A); //A側正回転
Wait(20);
OnFwd(OUT_C);
OnFwd(OUT_C); //C側正回転 → 前進
Wait(50);
Off(OUT_A+OUT_C);
OnFwd(OUT_C);
Wait(35);
OnFwd(OUT_A);
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』を使いました。あと、おなじく避けるときのプログラムも少しいじりました。