Hi Peda,

bei der Odometrie habe ich folgendes gemacht:

Zuerst wird Min und Max des linken und rechten Sensors ermittelt (in dem ich den Asuro einfach für ein paar Umdrehungen fahren lasse und die Odometrie auswerte).
Anhand dieser Werte kannst ich dann prüfen, ob der Sensor nun hell oder dunkel ist. Anbei ein kleines Beispiel-Programm.

Viele Grüße
Jens

Code:
#include "asuro.h"
#define DUNKEL 0
#define HELL 1

unsigned int lowLeft = 512;
unsigned int highLeft = 512;
unsigned int lowRight = 512;
unsigned int highRight = 512;

unsigned char getLeftStatus(unsigned int data) {
	unsigned int diffLow = data - lowLeft;
	unsigned int diffHigh = highLeft - data;

	if (diffLow < diffHigh) {
		return OFF;
	} else {
		return ON;
	}
}

unsigned char getRightStatus(unsigned int data) {
	unsigned int diffLow = data - lowRight;
	unsigned int diffHigh = highRight - data;

	if (diffLow < diffHigh) {
		return OFF;
	} else {
		return ON;
	}
}

int main(void) {
	Init();

	unsigned int speed = 100;
	MotorSpeed(speed, speed);

	unsigned int data[2];

	unsigned int i;
	for (i = 0; i < 1000; i++) {
		OdometrieData(data);

		//LEFT
		if (data[0] < lowLeft) {
			lowLeft = data[0];
		} else if (data[0] > highLeft) {
			highLeft = data[0];
		}

		//RIGHT
		if (data[1] < lowRight) {
			lowRight = data[1];
		} else if (data[1] > highRight) {
			highRight = data[1];
		}

	}

	while (TRUE) {
		OdometrieData(data);
		BackLED(getLeftStatus(data[0]), getRightStatus(data[1]));
	}

	return 0;
}