- 履歴一覧
- ソース を表示
- 2006a/B5/MenberOnly は削除されています。
- 1 (2006-07-31 (月) 11:40:04)
- 追加された行はこの色です。
- 削除された行はこの色です。
[[ロボティクス入門ゼミ]]
*自由に使ってください。 [#ie56b6ca]
**ロボット1 [#qbfadd5a]
int t
sub line_straight()
{
OnFwd(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_A+OUT_C);
while(SENSOR_1>35||SENSOR_2>50)
{
if(SENSOR_1>35&&SENSOR_2>50)
{
OnFwd(OUT_A+OUT_C);
}
if(SENSOR_1<35&&SENSOR_2>50)
{
OnFwd(OUT_C);
}
if(SENSOR_1>35&&SENSOR_2<50)
{
OnFwd(OUT_A);
}
}
Off(OUT_A+OUT_C);
}
sub line_back()
{
OnRev(OUT_A+OUT_C);
Wait(50);
OnRev(OUT_A+OUT_C);
while(SENSOR_1>35||SENSOR_2>50)
{
if(SENSOR_1>35&&SENSOR_2>50)
{
OnRev(OUT_A+OUT_C);
}
if(SENSOR_1<35&&SENSOR_2>50)
{
OnRev(OUT_C);
}
if(SENSOR_1>35&&SENSOR_2<50)
{
OnRev(OUT_A);
}
}
Off(OUT_A+OUT_C);
}
sub go_straight()
{
OnFwd(OUT_A+OUT_C);Wait(200);
OnFwd(OUT_C);OnRev(OUT_A);Wait(10);
OnFwd(OUT_A+OUT_C);
until(SENSOR_1<35&&SENSOR_2<50);
}
sub goal()
{
OnFwd(OUT_A+OUT_B+OUT_C);
Wait(50);
OnFwd(OUT_A+OUT_B+OUT_C);
while(SENSOR_2==1)
{
if(SENSOR_1>35&&SENSOR_2>50)
{
OnFwd(OUT_A+OUT_B+OUT_C);
}
if(SENSOR_1<35&&SENSOR_2>50)
{
OnFwd(OUT_B+OUT_C);
}
if(SENSOR_1>35&&SENSOR_2<50)
{
OnFwd(OUT_A+OUT_B);
}
Off(OUT_A+OUT_B+OUT_C);
}
sub turn_left (t)
{
OnFwd(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_C);OnRev(OUT_A);Wait(t);
Off(OUT_A+OUT_C);
}
sub turn_right (t)
{
OnFwd(OUT_A+OUT_C);
Wait(50);
OnFwd(OUT_A);OnRev(OUT_C);Wait(t);
Off(OUT_A+OUT_C);
}
task main()
{
SetPower(OUT_A,5);
SetPower(OUT_C,9);
SetSensor (SENSOR_1, SENSOR_LIGHT);
SetSensor (SENSOR_2, SENSOR_TOUCH);
SetSensor (SENSOR_3, SENSOR_LIGHT);
OnFwd(OUT_A+OUT_C);
until(SENSOR_1<35&&SENSOR_2<50);
repeat (3)
{
line_straight ();
turn_right (105);
line_straight();
line_straight();
turn_right (100);
OnFwd(OUT_B);
line_straight();
Off(OUT_B);
line_back ();
turn_right (130);
line_straight();
line_straight();
turn_left(140);
line_straight();
go_straight();
line_straight();
turn_left(140);
line_straight();
line_straight();
turn_left(140);
goal();
line_back ();
turn_left(100);
line_straight();
line_straight();
turn_right (100);
line_straight();
go_straight();
}
}