-         
Ergebnis 1 bis 4 von 4

Thema: Geschwindigkeit messen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2007
    Beiträge
    7

    Geschwindigkeit messen

    Anzeige

    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

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    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:


    Code:
    unsigned int long stopzeit;
    
    MotorenStart();
    stopzeit=Gettime()+3000;
    do {
    zaehle_odo_oder_was_auch_immer();
    } while (stopzeit>Gettime());
    MotorenStop();
    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    08.03.2007
    Beiträge
    7
    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..

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    55
    Beiträge
    5.789
    Blog-Einträge
    8
    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.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •