asuro_oli
21.02.2007, 20:56
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:
#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
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:
#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