Hallo,

egal, ob man Infrarot für
die Erkennung von Hindernissen oder aber
die Höhenmessung verwendet, es stellt sich die Frage:
Welches ist die gemessene Entfernung?
Flashed man das (in der lib enthaltene!) test.hex des IRCollisionTest's aus dem Beta der asuro_lib270 auf den Asuro, so stellt man fest, daß die gemessene Entfernung vom Winkel des reflektierenden Gegenstandes zum IR-Sender/-Empfänger und von der (über die Taster einstellbare) Pulsbreite abhängt.

Betrachtet man nun nur eine Richtung und nur eine Pulsbreite, so ergibt sich immer noch keine klare Entfernung:
  • für eine Entfernung kleiner als e_min leuchtet die StatusLED immer rot
  • für eine Entfernung größer als e_max leuchtet die StatusLED immer grün (kein Echo)
  • für Enternungen e_min <= e <= e_max flackert die StatusLED rot und grün


Für das Problem, was denn nun die "richtige Entfernung" ist, gibt es eine einfache Lösung:
Im Beitrag 242897 wird ein einfacher IR-Linksausweicher samt Quelltext vorgestellt.
Dieser läßt beide Motoren immer volle Kraft laufen, den rechten immer vorwärts, und den linken vorwärts, wenn kein IR-Echo empfangen wird, und rückwärts, sonst.

Dieses einfache Programm kann man nun zur genauen Entfernungsbestimmung (bei einer Richtung und einer Pulsbreite) verwenden:
Man bringt einen Gegenstand so zwischen e_min und e_max, daß sich das linke Rad nicht mehr dreht!!
[gleich viele IR-Echos und IR-Nicht-Echos;
man sollte den Asuro dabei in der Hand halten, damit er nicht wegfährt ... ]