Hallo GE-RO,
es ist immer schwer, sich in anderen Programmen zurecht zu finden. Irgendwie hast du auch links und rechts verwechselt.
Der Einfachheit halber hab ich mal meine Geradeaus-Routine in dein Programm eingebaut. Zuerst lief es auch nicht. Dann habe ich bemerkt, daß du in MotorSpeed() rechts und links vertauscht hattest. Nach Korrektur laufen die Räder mit meiner Routine jetzt synchron. siehe Code
Gruß waste
Code:
#include "asuro.h"
int main(void)
{
int Lnow;
int Rnow;
int Rold;
int Lold;
int Count1=0;
int Count2=0;
int diff;
int sl=180;
int sr=180;
unsigned int data[2];
Init();
while(1)
{
MotorDir(FWD,FWD);
MotorSpeed(sl,sr);
OdometrieData(data);
if (data[0] > 600) Lnow = 1; else Lnow = 0;
if (data[1] > 600) Rnow = 1; else Rnow = 0;
if (Lnow ^ Lold) Count1++;
if (Rnow ^ Rold) Count2++;
Lold=Lnow;
Rold=Rnow;
diff=Count2-Count1;
if (diff>0) sr--;
else if (diff<0) sl--;
else {sr=180; sl=180;}
if (sr<0) {sr=0;}
if (sl<0) {sl=0;}
}
return 0;
}
Lesezeichen