Hi,
na bis zum Ende des Universums hättst dus schon noch erfahren...
Wie es funktioniert:
je eine Halogenlampe + Fototransistor (FT) mit roter Filterkappe links und rechts vorne,

Ansicht von unten: http://www.mindstormsforum.de/bilder...hp?image_id=72
(beantwortet sicher auch deine Frage nach dem Messer...)

die Reflexionswerte werden als analoge Widerstandswerte des FT vom RCX ausgewertet.
Beim Kalibrieren wird der Untergrund ausgemessen und damit die "normale" Schwankungsbreite; die plus ein kleiner Zuschlag (blutig-empirisch) ergibt den äußersten Bereich des Erlaubten.
Liegt der Lichtwert außerhalb, ist es kein Rasen!


Code:
sub Calibrate()
{
   int min, max, d;
   LichtMw_1= SENSOR_1;
   LichtMw_3= SENSOR_3;
   min=SENSOR_1;
   max=SENSOR_1;

   ClearTimer(0);

   OnFwd (OUT_A + OUT_B + OUT_C);
   do {
      T=Timer(0);
      if(SENSOR_1<min) min=SENSOR_1;
      if(SENSOR_1>max) max=SENSOR_1;
      LichtMw_1=((LichtMw_1)*2+SENSOR_1)/3;
      LichtMw_3=((LichtMw_3)*2+SENSOR_3)/3;
      Wait(20);
      }
   while (T<40);  // 4 sek.

   Aus (OUT_A + OUT_C);   Wait(50);

   ClearTimer(0);
   OnRev (OUT_A + OUT_C);
   do {
      T=Timer(0);
      if(SENSOR_1<min) min=SENSOR_1;
      if(SENSOR_1>max) max=SENSOR_1;
      LichtMw_1=((LichtMw_1)*2+SENSOR_1)/3;
      LichtMw_3=((LichtMw_3)*2+SENSOR_3)/3;
      Wait(20);
      }
   while (T<40);  // 4 sek.
   
   d= (LichtMw_1);
  if  ((d-min) > (max-d))  deltaLicht=(d-min);
      else deltaLicht=(max-d);
   deltaLicht+=5;
   
   Aus (OUT_A + OUT_C);
   ClearTimer(0);
}