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);
}
Lesezeichen