- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 5 von 5

Thema: Odometrie: s-w-Wechsel über eine bestimmte Zeit addieren

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.02.2007
    Beiträge
    8

    Odometrie: s-w-Wechsel über eine bestimmte Zeit addieren

    Anzeige

    Powerstation Test
    Hallo zusammen!

    Ich bin noch ein ASURO-Neuling. Zur Zeit befasse ich mich mit der Odometrie. Mir gelingt es auch bereits ganz gut, schwarz-weiß-wechsel zu erkennen und aufzuaddieren. Das benötigt man ja auch zum Beispiel für eine Geschwindigkeitsregelung. Mein kleines Programm dazu sieht wie folgt aus:

    Code:
    #include "asuro.h"
    #define mittelwert 550
    
    	
    int main (void)
    {
    unsigned int daten[2];
    unsigned int odometrie_li;
    unsigned int odometrie_re;
    unsigned int letzter_wert_li = 550;
    unsigned int letzter_wert_re = 550;
    unsigned int zaehler_li = 0;
    unsigned int zaehler_re = 0;
    unsigned int i = 0;
    unsigned int j = 0;
    	
    Init();
    	
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    	
    for(j=0;j<500;j++) Sleep(255);
    
    for(i=0;i<=5000;i++)	      //Schleife 5000 mal durchlaufen
    {
    OdometrieData(daten);
    		
    odometrie_li = daten[0];
    odometrie_re = daten[1];
    		
    if(odometrie_li<mittelwert &&   letzter_wert_li>mittelwert) zaehler_li++;
    if(odometrie_li>mittelwert && letzter_wert_li<mittelwert) zaehler_li++;
    		
    if(odometrie_re<mittelwert && letzter_wert_re>mittelwert) zaehler_re++;
    if(odometrie_re>mittelwert && letzter_wert_re<mittelwert) zaehler_re++;
    		
    letzter_wert_li = odometrie_li;	
    letzter_wert_re = odometrie_re;		
    }
    
    	
    MotorSpeed(0,0);
    
    int2asc(zaehler_li);
    
    SerWrite(ausgabe,7); 	//zaehler_li ausgeben
    	
    while(1);
    	
    return 0;
    }
    Jedoch habe ich mit dem Programm das Problem, dass ich meine Schwarz-Weiß Wechsel nicht über eine ganz bestimmte Zeit aufaddiere. Ich durchlaufe die Schleife einfach nur 5000 mal und gucke bei jedem Durchlauf, ob ein wechsel stattgefunden hat. Wie kann ich anstatt der 5000 Durchläufe eine bestimmte Zeit einstellen, über welche die schwarz-weiß-wechsel aufaddiert werden?

    Über Antworten hierzu würde ich mich freuen. Danke und schöne Grüße!

    Oli

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo,

    vielleicht so:

    unsigned long startzeit, stopzeit;

    startzeit=Gettime(); // aktuelle Zeit seit Systemstart in 1/1000 Sek
    stopzeit=startzeit+1000; // eine Sek später

    und dann anstelle von

    for(i=0;i<=5000;i++)

    ein

    while (stopzeit > Gettime()) // Ausführen bis stopzeit erreicht

    Gruß

    mic
    Bild hier  
    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
    11.02.2007
    Beiträge
    8
    Hi!

    Danke für deine Antwort, hört sich gut an. Aber von der Funktion
    Gettime() habe ich bis jetzt noch garnicht gehört. Benötige ich dafür eine spezielle Bibliothek oder so?

    Gruß Oli

  4. #4
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    Ja, du brauchst die aktuelle version der rn-Asuro-bibliothek. eine etwas ältere version (funktioniert aber) gibt es bei www.sourceforge.net da musst du dann einfach nach asuro suchen. oder in einem der aktuellen threads gibt es eine beta version der neuesten fassung.für den anfang mit dem asuro empfehle ich dir version 2.61 von sourceforge. einfach die beiden dateien asuro.c und asuro.h in das gleiche verzeichnis kopieren in dem dein quelltext ist. dadurch werden die originalen bibliotheken überschrieben. macht nix, im notfall sind die ja noch auf cd. dann kannst du ganz normal wieterarbeiten und die neuen funktionen einfach benutzen.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    11.02.2007
    Beiträge
    8
    Danke damaltor, das werde ich gleich mal ausprobieren.

Berechtigungen

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

Labornetzteil AliExpress