Hallo

Das liegt schlicht daran, dass dein Programm nicht funktioniert. Du solltest einfach auch lesen, was man dir schreibt. Das auch im Stillstand gezählt wird, habe ich dir oben schon geschrieben. Wenn du durch Einrückungen deinen Code etwas struckturierst wird dir vielleicht auch klar, dass du nur eine einzige Schleife hast:

Code:
/*Asuro fährt geradeaus und misst die Helligkeit der Readsensoren*/
//#include <asuro.h>
int main(void)
{
unsigned int durchlauf;
unsigned int umdrehung=0; //Ist wichtig zu zaehlen der Umdrehungen
unsigned int zaehler=0;   //Ist wichtig zu zaehlen der verschiedenen Felder
unsigned int zeit; //Ist wichtig fuer die Pausen
unsigned int data[2],data_neu[2];
Init();
while(1)
{
	MotorDir(FWD,FWD); //Asuro fäht sehr langsam fuer genaue Messungen
	MotorSpeed(150,160);
	OdometrieData(data); //Das aktuelle Feld wird erfasst
	for(durchlauf=0;durchlauf>=1000;durchlauf++)
	{
		sleep(36);
	}
	OdometrieData(data_neu); //Das aktuellere Feld wird erfasst
	if(data[1]!=data_neu[1]) //und mit dem aktuellem Feld verglichen
	{ //wenn es anders war wird das zu der Anzahl der veränderten Felder addiert
		zaehler++;
		SerWrite("zeahler++\n\r",11); //Dieses TOPEREIGNISS wird natürlich weitererzählt
	}
	if(zaehler>=24)   //Wenn 24 Änderungen erfasst wurden
	{
		umdrehung++; //Haben sich die Räder einmal gedreht
		SerWrite("Umdrehung++\n\r",14);   //Auch dieses TOPEREIGNISS wird natürlich weitererzählt
		zaehler   = 0;                                    }
	if(umdrehung>=4) //wenn sie sich denn 4 mal gedreht haben
	{
		MotorSpeed(0,0);
		for(zeit=0;zeit<4000;zeit++) //Vier Sekunden stillstand
		{
			Sleep(36);
		}
		umdrehung = 0;
		SerWrite ("Das waren 4 Umdrehungen!\n\r",26);
	}
}
while(1)
return 0;
}
Nur ein paar Fehler:

-Zwischen dem Einlesen der alten und neuen Werte funktioniert die Zeitschleife nicht, weil du auf "durchlauf>=1000" prüfst. Wenn die Verzögerung funktionieren sollte, was sollte sie bewirken? Alter Wert einlesen-eine Sekunde warten während das Rad lustig weiterdreht-Überprüfen, ob sich der Wert geändert hat? Wenn er sich nicht geändert hätte, würde mich das sehr wundern!

-Du sendest immer noch während der Fahrt.

-Du kümmerst dich nicht um Hell oder Dunkel, du zählst einfach nur die Unterschiede.

Das sind auf den ersten Blick die gröbsten Dinge. Lies dir mal diesen Codescheiben-Thread durch und führe das Messprogramm (den Datenlogger) aus, dass in diesem Thread angeboten wird. Dann bekommst du vielleicht ein Gefühl für die Odometrie und ihre Tücken.

Gruß

mic