- 追加された行はこの色です。
- 削除された行はこの色です。
[[2005/MemberOnly/進行状況B]]
*壁をつたうロボ [#ic402443]
壁をつたうロボ
最初は、どうプログラミングすれば良いか全く見当も着きませんでした。そこで、2つのタッチセンサーが反応した時、右だけが反応している時、両方のセンサーが反応していないときで場合分けして、それぞれの場合でプログラムを作りました。しかし、そのプログラムをつなげることが出来ず、途方に暮れました(>_<)
最初は、どうプログラミングすれば良いか全く見当も着きませんでした。そこで、
2つのタッチセンサーが反応した時、右だけが反応している時、両方のセンサーが反応していないときで場合分けして、
それぞれの場合でプログラムを作りました。しかし、そのプログラムをつなげることが出来ず、途方に暮れました(>_<)
かなりの試行錯誤の結果、下のプログラムにたどり着きました。
また、右のセンサーだけを反応させながらうまく壁をつたうよう、右側にタイヤを着けました。以下はそのプログラムです
また、右のセンサーを反応させながらうまく壁をつたうよう、右側にタイヤを着けました。以下はそのプログラムです
***task main () [#y1c23347]
{
SetSensor(SENSOR_3,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_TOUCH); //センサー1、3をタッチ
センサーと定義
SetSensor(SENSOR_1,SENSOR_TOUCH);
OnFwd(OUT_A+OUT_C);
OnFwd(OUT_A+OUT_C); //前進(センサー3が触れ
ているときは前進)
while(true)
{
if((SENSOR_1 ==1)&&(SENSOR_3 == 1))
if((SENSOR_1 ==1)&&(SENSOR_3 == 1)) //もしセンサー1、3が反
応したら
{
OnRev(OUT_A+OUT_C); Wait(40);
OnFwd(OUT_C); Wait(130);
OnFwd(OUT_A);
OnRev(OUT_A+OUT_C); Wait(40); //バック
OnFwd(OUT_C); Wait(130);
OnFwd(OUT_A); //左90°回転
}
else{if(SENSOR_3 == 0)
else{if(SENSOR_3 == 0) //センサー3が反応して
いないとき
{
Off(OUT_C);
OnFwd(OUT_A);
Off(OUT_C); (センサー3が反応するま
OnFwd(OUT_A); で右に回転)
until(SENSOR_3 == 1);
OnFwd(OUT_A+OUT_C);
} } }
OnFwd(OUT_A+OUT_C); (センサー3が反応したら
} } } 直進)
}
-ロボットの説明をもう少し書き加えて、プログラムがどのように動作しているか説明して下さい。あとページの体裁もきちんと整えて下さい。 -- [[まいける(TA)]] &new{2005-12-02 (金) 16:52:47};
#comment