Hallo andun,

MY_MOTOR_DIFF ist mehr oder weniger nur eine Hilfskrücke, wenn man die Motoren ohne Odometrie ansteuern will. Der Wert wird deshalb in der Lib Funktionen nirgends verwendet, sondern bei Bedarf in eigenen Programmen.

Dazu muß man erst mal durch probieren herausfinden, welcher Wert hier Sinn macht. D.h. den Wert solange ändern bis der Asuro einigermaßen geradeaus fährt. Natürlich wird das ganze nur für eine bestimmte Geschwindigkeit funktionieren, deshalb ist es auch nur eine Krücke.

Dazu braucht man eine Funktion wie diese hier (ohne Gewähr, ungetested!!):
Code:
void myMotorSpeed(unsigned char left, unsigned char right)
{
  int speed_l, speed_r;

  if (MY_MOTOR_DIFF > 0)   /* linker Motor schwaecher */
    speed_l = (left+MY_MOTOR_DIFF) > 255 ? (left+MY_MOTOR_DIFF) : 255;
    speed_r = (right-MY_MOTOR_DIFF) < 0 ?  (right-MY_MOTOR_DIFF) : 0;
  }
  else if (MY_MOTOR_DIFF < 0)  /* rechter Motor schwaecher */
  {
    speed_l = (left+MY_MOTOR_DIFF) <0 ? (left+MY_MOTOR_DIFF) : 0;
    speed_r = (right-MY_MOTOR_DIFF) >255 ?  (right-MY_MOTOR_DIFF) : 255;
  }
  else
  {
    speed_l = left;
    speed_r = right;
  }
  MotorSpeed((unsigned char)speed_l, (unsigned char)speed_r);
}