@Churchi
Dein Code kommt mir irgendwie seltsam vor.
Integration bedeuten normalerweise, das man alle Messwerte aufaddiert.

Wenn ich deinen Code richtig verstehe, lässt du aller Messwert zwischen -1 und 1 weg. Wenn die Werte gösser 1 sind, addierst du nur wenn der Wert noch grösser wird und wenn er kleiner -1 ist, nur wenn er noch kleiner wird.
D.h. wenn du deinen Gyro so hin und her bewegst, dass der Messwert z.B. immer zwischen 1 und 10 schwankt, wird dein Integral immer grösser, weil alle Werte bei denen der Winkel kleiner wird gar nicht addiert werden.
D.h. wenn du deinen Gyro bei der Messung nicht immer ganz gleichmässig weit hin - und her drehst, verschiebt sich der berechnete Nullpunk zwangsläufig.
Oder habe ich da den Code falsch verstanden?

In deinem Diagramm fällt natürlich der Sprung in der 17. Sekunde auf.

Vorher verschiebt sich der Nullpunkt kontinuierlich nach oben, bei Sekunde 17 macht er plötzlich einen Sprung nach unten. Kann es sein, dass da einfach nur die Variable für das Integral übergelaufen ist?

Was ist gyro_x für ein Wert? Direkt der Messwert des Gyros?
Kann ja eigentlich nicht sein, denn der ist ja immer > 0.

Daher wird Gyro_x vermutlich immer der aktuelle Messwert minus dem Wert den der Gyro in Ruhelage hat sein. Ausserdem mittelst du noch über 32 Messwerte.
Je nachdem wie du Gyro_x bestimmst und was für einen Datentyp du dafür verwendest, kann es sein, dass das Integral alleine durch "Rundungsfehler" ständig wächst ohne dass der Gyro überhaupt bewegt wird. Da du allle Messwerte zwischen -1 und 1 ausblendest würdest du das allerdings nicht sehen und dieser Fehler geht erst ein, wenn du den Gyro bewegst.

Ich habe auch mal mit einem Gyro herumexperimentiert und um Resourcen zu sparen Integerwerte für das Mittel über mehrere Werte verwendet.
Dabei ist dann bei jeder Messung ein sehr kleiner "Rundungsfehler" aufgetreten, der sich durch die vielen Messungen pro Sekunde ruckzuck auffadiert hat und dadurch jeweils nach kurzer Zeit die Variable für das Integral zum Überlaufen gebracht hat

D.h. mein berecheter Nullwinkel machte eigentlich genau das, was deiner macht, nämlich langasm anwachsen um dann beim Überlauf plötzlich nach unten zu springen.

Bei mir konnte man das allerdings schon feststellen, wenn der Gyro ruhig auf dem Tisch lag. Bei dir würde das in Ruheposition wie nicht auffallen, weil du die Werte zwischen -1 und 1 ausblendest.