OK, da war ich etwas schnell, das Beispiel habe ich nicht gesehen.
Allerdings kapier ich's nicht vollständig:
uint8_t l = analog_getValueExt(ANALOG_FL, 2);
OK du benutzt ANALOG_ACTIVE - ANALOG_PASSIVE
while (!analog_has_update()); // Warten bis die Messung beendet
Dann wartest du bis die Messung abgeschlossen ist.
if (l < l_min) l_min = l; // Offset bestimmen
wenn l kleiner Offset_l (was zumindest bei 1. Mal immer der Fall ist überschreibst du den auf 255 gesetzten Offset mit dem Messwert
l -=l_min; // Offset abziehen
wenn die Abfrage ausgeführt wurde ist hier l = 0 falls nicht wird der Offset davon abgezogen - soweit so gut....
l = l > 5; // Hindernis erkennen
hier steig ich aus, ich kapier nicht was das soll. l > 5 lifert 1 zurück wenn l > 5 und 0 wenn nicht, aber warum schreibst du das wieder in l? Arbeitest du dann nur mit 1 oder 0 läuft das im Abstands Event dauernd oder wird das einmalig aufgerufen und du verwendest nur den Offset?
Gruß Boson