Das sollte so passen...
Ich persöhnlich mürde mich für die Kräfte die wirken wenn so ein Vogel anfliegt interessieren... Daher wird in dem Code auh die Anflugkurve ungefiltert mitgeschnitten... vieleicht kannst du das mit deinen Tools zu einer Kurve plotten und dann mal posten...
from time import sleep
from statistics import pstdev, mean
# Parameter zum Anpassen
gl_BufferSize = 7
gl_MessIntervall = 0.1
gl_MaxAbweichung = 2.0
# Globale Variablen
gl_Gewichte =[0] * gl_BufferSize
gl_WrPtr = 0
# zum Aufzeichnen der Kräfte die bei einem Anflug oder Abflug auftreten
gl_AnflugkurveSize = 100 # bei einem Messinterval von 0.1 S ist die Kurve maximal 10 s Lang
gl_Anflugkurve = []
def loop():
global gl_Gewichte
global gl_MaxAbweichung
global gl_MessIntervall
global gl_Gewichte
global gl_WrPtr
global gl_Anflugkurve
global gl_AnflugkurveSize
Gewicht = MessIrgendwas()
# Messwerte sind hier als Ringspeicher organisiert
gl_Gewichte[gl_WrPtr] = Gewicht
gl_WrPtr += 1
if (gl_WrPtr >= gl_BufferSize):
gl_WrPtr = 0
Abweichung = pstdev(gl_Gewichte)
if Abweichung < gl_MaxAbweichung:
Mittelwert = mean(gl_Gewichte)
# ==> auf das Display oder wo auch immer hin
print(Mittelwert) # Nun kann man mit dem Wert machen was immer auch man will
# Anflugkurve auf den Plotter :-)
# plot(gl_Anflugkurve)
gl_Anflugkurve = [] # Kurve resetten für einen neuen Anflugversuch
else:
if len(gl_Anflugkurve) < gl_AnflugkurveSize:
gl_Anflugkurve.append(Gewicht)
sleep(gl_MessIntervall)