-
-
Moderator
Robotik Visionär
Hallo
Das sieht ja auf den ersten Blick recht ordentlich aus. Hier mal meine Kommentare:
Wie viele hell/dunkel-Wechsel erkennst du bei 1000 Messzyklen?
Ein MotorDir(FWD,FWD) ist zwar überflüssig, weils so in Init() gesetzt wird, würde aber auch nicht schaden.
Ich glaube, der generelle Denkfehler ist folgender:
Die hell/dunkel-Verteilung ist nicht gleichmässig, soll heisen, dein Mittelwert den du bildest, liegt nicht in der Mitte der möglichen Werte.
Ob das dein Problem ist, kann ich dir noch nicht sagen, ich muss deinen Code erst noch etwas "verinnerlichen"
Ich löse das etwa so:
Eine Kalibrierungsfahrt mit default-Startwerten speichert die Min- und Max-Werte je Seite(bei dir (start()). Die Differenz zwischen Max und Min teile ich durch drei und lege die Schwelle für low auf min+diff/3, für high auf max-diff/3. Neu eingelesene Werte vergleiche ich dann mit meinen Schwellwerten und zähle in Äbhängigkeit vom letzten Pegel bei Bedarf den jeweiligen Zähler hoch. Ein Wert im mittleren Drittel wird generell ignoriert. Das ist quasi ein Filter, der Fehllesungen ausfiltert.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen