Warum muss es eigentlich ein Indoor Heli sein? Lasst ihn doch draussen fliegen und richtet die Sensoren nach unten (zum Landen). Da ist nichts im Weg.
Wenn der Sensor unter dem Hauptrotor sitzt, musst du eben sehr oft messen, jedes mal so kurz wie möglich. Du hast ja auch den Abstand vom Sensor zum Rotor. Den speicherst du als Konstante im Programm und vergleichst dann jedes mal den Sensorwert mit dieser Konstante. Überschreitet der Sensorwert den Abstand (eventuell + einen kleinen ungenauigkeitspuffer), dann hast du höchstwahrscheinlich den richtigen Wert.
Das könnte man auch in einer Schleife machen, so bist du nicht auf eine bestimmte Anzahl an Messwerten angewiesen.
Messwert = Sensordaten;
while(Messwert <= Abstand + Puffer) {
Messwert = Sensordaten;
}
AktuellerAbstand = Messwert;
Da der Heli aber zerbrechlich ist und du nicht aus ungeschickten Messabständen oder ähnlichem den Heli schrotten willst, kannst du noch einen Zähler einbauen, z.B. wenn du seit 0,5 keinen aktuellen Abstand hast, steige nicht weiter, bis der aktuelle Abstand da ist. (Hier muss allerdings auch gewährleistet sein, dass der Sensor für sehr große Abstände, die er nicht mehr messen kann, einen hohen Wert liefert, ansonsten musst du diesen Fall auch behandeln).
Ich hoffe, das hilft dir noch ein wenig.
Lesezeichen