- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a/A8/課題2右]]
#define THRESHOLD 47 //閾値を47に設定
sub right() //右回りに向きを変える動作
{ OnFwd(OUT_A);
OnRev(OUT_C);
Wait(80);
Off(OUT_A+OUT_C);
Wait(50); }
sub left() //左回りに向きに向きを変える動作
{ OnRev(OUT_A);
OnFwd(OUT_C);
Wait(100);
Off(OUT_A+OUT_C);
Wait(50); }
int a;
task main ()
{
a=0;
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1に光センサーをセット
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2にタッチセンサーをセット
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ−3に光センサーをセット
{a=0;
SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1に光センサーをセット
SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2にタッチセンサーをセット
SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ−3に光センサーをセット
while (a<2) { //タッチセンサーが2回反応したら止まる
while (a<2) { //タッチセンサーが2回反応したら止まる
if (SENSOR_1>THRESHOLD){ //センサ−1が白で
if(SENSOR_3>THRESHOLD){ //センサー3も白のとき
OnFwd(OUT_A+OUT_C);
}
OnFwd(OUT_A+OUT_C);}
else //センサー3が黒のとき
{
OnFwd(OUT_A);
Off(OUT_C);
}
}
{ OnFwd(OUT_A);
Off(OUT_C); } }
else{ //センサー1が黒で
if(SENSOR_3>THRESHOLD){ //センサー3が白のとき
OnRev(OUT_A);
OnFwd(OUT_C);
}
}
OnFwd(OUT_C); } }
if(SENSOR_2 == 1) //タッチセンサーに何かがあたったとき
{
OnRev(OUT_A+OUT_C); //少しバックして距離をとる
Wait(25);
Off(OUT_A+OUT_C);
Wait(50);
{ OnRev(OUT_A+OUT_C); //少しバックして距離をとる
Wait(25);
Off(OUT_A+OUT_C);
Wait(50);
left(); //左回りに向きを変える
OnFwd(OUT_A+OUT_C); //障害物の横を通れるくらい移動する
Wait(180);
Off(OUT_A+OUT_C);
Wait(50);
right(); //右回りに向きを変える
OnFwd(OUT_A+OUT_C); //障害物の横を通過する
Wait(300);
Off(OUT_A+OUT_C);
Wait(50);
right(); //右回りに向きを変える
OnFwd(OUT_A+OUT_C); //ラインのところに戻る
Wait(180);
Off(OUT_A+OUT_C);
Wait(50);
left(); //進行方向を向く
OnRev(OUT_A+OUT_C); //少し下がることでいろんな場所に対応
Wait(60);
Off(OUT_A+OUT_C);
Wait(50);
a=a+1;
}
}
}
a=a+1; /障害物を避けた回数をカウント
}
}
}