Hallo

Lass dir doch die Werte mal am Terminal anzeigen:

Code:
while(1)
{
OdometrieData(data);
SerWrite("\n\r",2);
PrintInt(data[0]);
SerWrite("  ",2);
PrintInt(data[1]);
Msleep(500);
}
Ohne Ansteuerung der Motoren, dann kannst du die Räder mit der Hand drehen und die Werte austesten. So kannst du auch den Einfluß von Fremdlicht und die Wirkung von axial verschiebbaren Codescheiben auf die Werte sehen.

Wenn du eine ältere Library (asuro.c) ohne PrintInt() und Msleep()verwendest:
Code:
void PrintInt(int wert)
{
    char text[16]="      ";
    itoa(wert,text,10);
    SerWrite(text,strlen(text));
}

void Msleep(int dauer)
{
    int z;
    for(z=0;z<dauer;z++) Sleep(36);
}
Triggerlevel sollte nun mindestens um Hysteresse kleiner als der max-Wert und mindestens um Hysteresse größer min-Wert sein. Bei z.B. min=150 zu max=600 wäre 400 ein möglicher Triggerlevel. Eine etwas größere Hysteresse (vielleicht 50-100) verringert Fehlzählungen.

Gruß

mic