Hallo

Nein, das Programm speichert nichts im EEProm, nach dem Einschalten startet der asuro jedesmal jungfräulich.

Abhängig vom Codescheibensegment schwanken die eingelesenen Odometriewerte zwischen einem max- und einem minimalen Wert. Der Mittelwert sollte etwa TRIGGERLEVEL sein. Wenn nun der eingelesene Wert über den TRIGGERLEVEL steigt, wird dies in status[] gespeichert und der Zähler verändert. Anschliessend wird auf ein Unterschreiten des TRIGGERLEVEL gewartet, dieses wird wieder in status[] gespeichert, Zähler verändert usw.
Code:
// Helligkeitswerte der Lichtschranken auslesen
OdometrieData(data);
// Wechsel linker Sensor von niedrig auf hoch?
if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) {
status[0]=HIGH;
difference++;
}
// Wechsel linker Sensor von hoch auf niedrig?
if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) {
status[0]=LOW;
difference++;
}
Die ODO-Werte sind umso kleiner, je heller die Sensoren beleuchtet werden! Deshalb könnte es sein, dass der TRIGGERLEVEL für deinen asuro zu hoch gewählt ist. Versuche mal kleinere Werte wie 550, 500, 450...

Ein einfacher Test wäre z.B:

Code:
while(1)
}
OdometrieData(data);
if(data[0]<500) StatusLED(RED); else StatusLED(GREEN);
if(data[1]<400) FrontLED(ON); else FrontLED(OFF);
Sleep(255);
}
...und die Räder vom Hand drehen;)

Gruß

mic