-
-
Neuer Benutzer
Öfters hier
00424 int Go(int distance, int speed)
00425 {
00426 int enc_count = 0;
00427 int tot_count = 0;
00428 int diff = 0;
00429 int l_speed = speed, r_speed = speed;
00430 enc_count=abs(distance);
00431
00432 // enc_count=distance*10000;
00433 // enc_count/=12823;
00434
00435 Encoder_Set(0,0); // reset encoder
00436
00437 MotorSpeed(l_speed,r_speed);
00438 if(distance<0) MotorDir(RWD,RWD);
00439 else MotorDir(FWD,FWD);
00440
00441 while((tot_count<enc_count) && (PollSwitch()!=0)) {
00442 tot_count += encoder[LEFT];
00443 diff = encoder[LEFT] - encoder[RIGHT];
00444 if (diff > 0) { //Left faster than right
00445 if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
00446 else r_speed += 10;
00447 }
00448 if (diff < 0) { //Right faster than left
00449 if ((r_speed > speed) || (l_speed > 244)) r_speed -= 10;
00450 else l_speed += 10;
00451 }
00452 Encoder_Set(0,0); // reset encoder
00453 MotorSpeed(l_speed,r_speed);
00454 Msleep(1);
00455 }
00456 MotorDir(BREAK,BREAK);
00457 Msleep(200);
return tot_count;
}
Müsste doch eigentlich reichen, oder? Asuro steht --> man startet ein Ausweichmanöver --> man startet Go() erneut mit "distance - tot_count"
Werd ich heut Abend mal testen...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen