Hallo!!

Endlich hab ich mal wieder Zeit gefunden um mich mit dem asuro zu beschäftigen.

Ich hab mich mal an die Odometrie gewagt und eigentlich meiner Meinung nach ein nicht so schlechtes Programm geschriebenm welches nur leider nicht funktioniert.

Code:
#include "asuro.h"

int main (void)
{
	unsigned int data[2];
	unsigned int L_alt_l[1];	//Letzte Wert des linken Fototransistors
	unsigned int L_alt_r[1];	//Letzte Wert des rechten Fototransistors
	float n_l;
	float n_r;
	int a;						//Hilfsvariable
	int b;						//Hilfsvariable
	unsigned char c;			//Wert für die Geschwindigkeit des linken Motors
	unsigned char d;			//Wert für die Geschwindigkeit des rechten Motors
	int dh_l;
	
	a = 0;
	b = 0;
	c = 140;					// Wert für linken Motor bestimmen		
	d = 140;					// Wert für rechten Motor bestimmen
	
	Init();
	
	OdometrieData(data);
	MotorDir(FWD, FWD);
	
	while(1)
	{
                MotorSpeed(c, d);
		L_alt_l[0] = data[0];
		L_alt_r[0] = data[1];
		OdometrieData(data);
		
		dh_l = data[0] - L_alt_l[0];
				
		if( dh_l > 200)
		{
			a++;
			n_l=a/8; 			//Umdrehungen in der Zeit t
		}
		
		if( data[1] - L_alt_r[0] > 200 || data[1] - L_alt_r[0] < -200)
		{
			b++;
			n_r=b/8;			//Umdrehungen in der Zeit t
		}
		
		if( n_l < n_r)
		{
			d--;				//Geschwindigkeit des rechten Motors verkleinern
			
		}
		
		if( n_l > n_r)
		{
			c--;				//Geschwindigkeit des rechten Motors verkleinern
		}
	}
}
könnt ihr da vielleicht wo nen Fehler entdecken, oder ist das ganze generell falsch was ich da mache? Bitte nicht wunder das ich im unteren Teil für die Berechnung der Differenz zwei verschieden Methoden angewandt habe, will damit nur zeige das es mit keiner der zwei funktioniert.

mfg Chrise