[[2014a/Member]]

 #define Line_Color 60
 #define Max 40
 #define H 60
 #define L 25
 #define Step 4
 #define cross_time 500 
 
 sub go_fwd()
 {
  OnFwd(OUT_AC,H);
 }
 
 sub turn_left()
 {
  OnFwd(OUT_A,L);
  OnRev(OUT_C,L);
 }
 
 sub TURN_LEFT()
 {
  OnFwd(OUT_A,L);
  Off(OUT_C);
 }
 
 sub turn_right()
 {
  OnRev(OUT_A,L);
  OnFwd(OUT_C,H);
 }
 
 sub TURN_RIGHT()
 {
  Off(OUT_A);
  OnFwd(OUT_C,H);
 }
 
sub short_break()
{
 Off(OUT_AC);
 Wait(1000);
}

sub cross_line()
{
 OnFwd(OUT_AC,L);
 Wait(cross_time);
}

task main()
{
OnFwd(OUT_AC);
...
 SetSensorLight(S1);
 int nOnline=0;
 int nCrossline=1;

 OnFwd(OUT_AC,L);
 until(SENSOR_1 <= Line_Color);
 short_break();
 cross_line();
 short_break();

 while(true){
 while(nCrossline < 6){
 while(nOnline < Max){
   if(SENSOR_1 < Line_Color-15){
    turn_right();
    nOnline++;
 }else{
  if(SENSOR_1 < Line_Color-7){
    TURN_RIGHT();
  }else if(SENSOR_1 < Line_Color+7){
    go_fwd();
  }else if(SENSOR_1 < Line_Color+15){
    turn_left();
  }else{
    TURN_LEFT();
}
 nOnline=0;
}
 Wait(Step);
}
 short_break();
 cross_line();
 nOnline=0;
 OnRev(OUT_A,L);
 OnFwd(OUT_C,L);
 Wait(500);
 nCrossline++;
}
 short_break();
 OnRev(OUT_AC,L);
 Wait(1500);
 short_break();
 OnFwd(OUT_AC,75);
 Wait(500);
 short_break();
 OnRev(OUT_AC,L);
 Wait(2000);
 short_break();
 nCrossline=0;
}
}
}


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS