2006b/A1/kuroneko/2nd_robot-t1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2006b/A1/kuroneko]]
衝突後回り込むプログラムです。
#define time 160
sub turn_r() 直角に右へ曲がります。
{
OnRev(OUT_C);
Wait(96);
OnFwd(OUT_C);
}
sub turn_l() 直角に左へ曲がります。
{
OnRev(OUT_A);
Wait(96);
OnFwd(OUT_A);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true)
{
OnFwd(OUT_A+OUT_C);
if(SENSOR_1<40) 左のセンサーが黒線の上に来たら・・・↓
{
Off(OUT_A); 左へ大きく少しだけ曲がります。
Wait(5);
if(SENSOR_1<40) まだ黒線の上にいるようなら・・・↓
{
OnRev(OUT_A); 左モーターを止めただけの先ほどと違い、
until(SENSOR_1>40); 左モーターを逆回転させより小さく回転させます。
}
}
if (SENSOR_3<40) 上の左右逆版です。
{
Off(OUT_C);
Wait(5);
if(SENSOR_3<40)
{
OnRev(OUT_C);
until(SENSOR_3>40);
}
}
if(SENSOR_2==1) 衝突したら・・・
{
OnRev(OUT_A+OUT_C); ちょっとバックします。
Wait(30);
sub turn_r(); 右へ旋回して少し前進。
Wait(time);
sub turn_l(); 左へ旋回して少し前進。
Wait(time);
sub turn_l(); 左へ旋回して前進。これでコの字を描きます。
until(SENSOR_1<40); 黒線の上に戻ります。
Wait(40);
sub turn_r();
}
}
}
[[衝突後Uターンするプログラムはこちら。>2006b/A1/kuroneko/2nd_robot-return]]
終了行:
[[2006b/A1/kuroneko]]
衝突後回り込むプログラムです。
#define time 160
sub turn_r() 直角に右へ曲がります。
{
OnRev(OUT_C);
Wait(96);
OnFwd(OUT_C);
}
sub turn_l() 直角に左へ曲がります。
{
OnRev(OUT_A);
Wait(96);
OnFwd(OUT_A);
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_TOUCH);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true)
{
OnFwd(OUT_A+OUT_C);
if(SENSOR_1<40) 左のセンサーが黒線の上に来たら・・・↓
{
Off(OUT_A); 左へ大きく少しだけ曲がります。
Wait(5);
if(SENSOR_1<40) まだ黒線の上にいるようなら・・・↓
{
OnRev(OUT_A); 左モーターを止めただけの先ほどと違い、
until(SENSOR_1>40); 左モーターを逆回転させより小さく回転させます。
}
}
if (SENSOR_3<40) 上の左右逆版です。
{
Off(OUT_C);
Wait(5);
if(SENSOR_3<40)
{
OnRev(OUT_C);
until(SENSOR_3>40);
}
}
if(SENSOR_2==1) 衝突したら・・・
{
OnRev(OUT_A+OUT_C); ちょっとバックします。
Wait(30);
sub turn_r(); 右へ旋回して少し前進。
Wait(time);
sub turn_l(); 左へ旋回して少し前進。
Wait(time);
sub turn_l(); 左へ旋回して前進。これでコの字を描きます。
until(SENSOR_1<40); 黒線の上に戻ります。
Wait(40);
sub turn_r();
}
}
}
[[衝突後Uターンするプログラムはこちら。>2006b/A1/kuroneko/2nd_robot-return]]
ページ名: