PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeit messen



minus_
13.03.2007, 22:40
hallo,
habe folgende idee, nur leider weiss ich nicht genau wie ich sie umsetzen kann.
ich möchte die geschwindigkeit meines asuros ausrechnen. ich habe eine funktion die in einer endlossschleife die zurückgelegte strecke ausrechnet (mit hilfe von odometrie daten). mein problem ist jetzt, dass das programm quasi in dieser endlosschleife gefangen ist, ich also nicht gleichzeitig die zeit ausrechnen wie lange er gefahren ist, um anschliessend die geschwindkeit zu berechnen.
hat jemand eine idee, wie ich es anders machen könnte oder sogar eine lösung für mein problem

mfg

radbruch
13.03.2007, 23:42
Hallo

In der asuro.c gibt es die Funktion Gettime(), sie liefert die Zeit in 1/1000Sek seit dem Systemstart als LongInt-Wert.

Um den asuro eine bestimmte Zeit lang fahren zu lassen könnte man diesen Code verwenden:




unsigned int long stopzeit;

MotorenStart();
stopzeit=Gettime()+3000;
do {
zaehle_odo_oder_was_auch_immer();
} while (stopzeit>Gettime());
MotorenStop();


Gruß

mic

minus_
14.03.2007, 11:26
okay das wäre eine möglichkeit, aber so muss ich von vornherein wissen wie lang der roboter fahren soll. aber das andere problem ist, dass die countOdometrie() funktion eine endlosschleife ist( while(1) { ... } ) und da fängt er sich doch und kommt nicht mehr raus..

radbruch
14.03.2007, 13:23
do ... while (stopzeit>Gettime());
Das Ende der do-while-Schleife ist erreicht, wenn die 3000 mSek vorbei sind. Du kannst ihn auch auf 100 zählen lassen und messen, wie lange er dazu braucht:


startzeit=Gettime();
do Fahreundzaehle(); while (zaehler<100);
gebrauchtezeit=Gettime()-startzeit;

Viele Wege führen zum Ziel.