Habs jetzt endlich mal geschafft, die Odometrie zu programmieren - und ASURO dreht durch!
Das läuft ungefähr so: Ein Rad läuft vorwärts- wird langsamer - andres rad läuft - wird langsamer - aus - bumm - alle laufen - es surrt - es fängt an zu "puckern" (Wie bei Starwars Epi 1 die Podracer) - Die Räder werden immer schneller - sie wackeln ordentlich - ich mach aus, weil ich Angst habe, dass das Ding sich durch Hyperaktivität aufhängt. Was ist hier los?

Code:
	int Rmin=1023;
	int Rmax=0;
	int Rhell=0;
	int Rdunkel=0;
	int RZaehler;
	int UebergaengeR=0;
	int RSpeed=100;

	int Lmin=1023;
	int Lmax=0;
	int Lhell=0;
	int Ldunkel=0;
	int MittelwertR;
	int MittelwertL;
	int LZaehler;
	int UebergaengeL=0;
	int LSpeed=100;
	

	long Zaehler=0;
	
	BackLED(ON,ON);
	
	while(1)
	{
		MotorDir(FWD,FWD);
		MotorSpeed(LSpeed,RSpeed);
	
		for (Zaehler=0; Zaehler<100;Zaehler++)
		{
			unsigned int data[2];
	
			OdometrieData(data);
	
			if (data[0] > Lmax)
				Lmax=data[0];
	
			if (data[0] < Lmin)
				Lmin=data[0];
	
			if (data[1] > Rmax)
				Rmax=data[1];
			
			if (data[1] < Rmin)
				Rmin=data[1];
	
	
			MittelwertL=(Lmin+Lmax)/2;
			MittelwertR=(Rmin+Rmax)/2;
			
			LongSleep(1);
				
		}

		unsigned int data[2];

		OdometrieData(data);
		
		if (data[0] < MittelwertL)
		{
			Lhell = data[0];
			LZaehler = HELL;
		}
		else
		{
			Ldunkel = data[0];
			LZaehler = DUNKEL;
		}	
		if (data[1] < MittelwertR)
		{
			Rhell = data[1];
			RZaehler = HELL;
		}
		else
		{
			Rdunkel = data[1];
			RZaehler = DUNKEL;
		}	
		
		int i;
		
		for (i = 0; i< 100; i++)
		{
			OdometrieData(data);
		
			if (data[0] < MittelwertL && LZaehler == DUNKEL)
				UebergaengeL = UebergaengeL + 1;
			else if (data[0] > MittelwertL && LZaehler == HELL)
				UebergaengeL = UebergaengeL + 1;
			
			if (data[1] < MittelwertR && RZaehler == DUNKEL)
				UebergaengeR = UebergaengeR + 1;
			else if (data[1] > MittelwertR && RZaehler == HELL)
				UebergaengeR = UebergaengeR + 1;	
		}
		
		if (UebergaengeR < UebergaengeL)
		{
			RSpeed = RSpeed + 1;
			LSpeed = LSpeed - 1;
			StatusLED(RED);
		}	
		else if (UebergaengeR > UebergaengeL)
		{
			RSpeed = RSpeed - 1;
			LSpeed = LSpeed + 1;
			StatusLED(GREEN);
		}
		else if (UebergaengeR == UebergaengeL)
			StatusLED(YELLOW);
	}
Ich hab keine Ahnung, was das soll!

Tschüß,
Lunarman