PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anhand der Odometrie, gerade ausfahren.



_goto
11.11.2006, 21:23
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.


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. :<

damaltor
11.11.2006, 22:58
also unsigned char = 120 ist schonmal quatsch =)

unsigned char VARIABLENNAME = 120 wäre besser.

ansonsten vermute ich dass der wert von 512 tzu niedrig ist. du solltest anfangen dir die werte der odo sensoren während der fahrt bzw während drehender reifen bei aufgebocktem asuro über hyperterminal ausgeben lassen.

ansonsten BENUTZE BITTE DIE SUCHFUNKTION. das thema ist absolut zur genüge diskutiert worden, probier halt einige programme aus und ob die funktionieren wirste sehn. ansonsten hol dir die erweiterte lib, denn die ganzen funktionen der alten lib bleiben erhalten. es gibt nur ein paar neue dazu, deshalb ist es ja eine ERWEITERTE lib.