Gibt schon ziemlich viele Thread zu dem Thema, aber die meisten beschäftigen sich mit der neuen asuro.h doch ich will das Problem komplett mit der original asuro.h lösen.
Der Asuro soll (wer hätte es gedacht) geradeaus fahren, das soll mithilfe der Odometrie realisiert werden.
Folgenden Quellcode habe ich dafür geschrieben, will aber in keinster weiße so wie ich es will. Er fährt eben ganz normal und somit eine leichte Linkskurve.
Code:
unsigned char= 120;
unsigned char= 120;
void drive(void) {
unsigned int odata[2];
int time1;
int time2;
int cont = 1;
MotorDir(FWD,FWD);
MotorSpeed(speedleft,speedright);
StatusLED(YELLOW);
while(cont) {
time1 = 0;
time2 = 0;
OdometrieData(odata);
while(odata[0] > 512)
;
do {
OdometrieData(odata);
time1++;
} while (odata[0] < 512);
do {
OdometrieData(odata);
time1++;
} while (odata[0] > 512);
while(odata[1] > 512)
;
do {
OdometrieData(odata);
time2++;
} while (odata[1] < 512);
do {
OdometrieData(odata);
time2++;
} while (odata[1] > 512);
if(time1-time2 >= 1)
{
StatusLED(GREEN);
speedright += 2;
}
else if(time2-time1 >= 1)
{
StatusLED(RED);
speedleft += 2;
}
/*else*/
/* cont = 0; */
}
}
Die Vergleichswerte mit ">=1" sind jetzt erstmal nur zum testen, falls die Werte nicht identisch sind, sollte sich das durch die StatusLED bemerkbar machen. Doch die bleibt immer Gelb. :<
Lesezeichen