Kommastelle filtern, eigenartiges Verhalten

Glückwunsch, es immer ein schönes Gefühl es selbst geschafft zu haben!

Besser als noch so tolle Codes von anderen zu kopieren.

Nur eine Anmerkung:

MittelRohwert = (Rohwert + MittelRohwert * Filterfaktor) / Teiler;

Diese Formel funkioniert nicht mit int!

Ich weiß, es gibt im Forum Leute, die floatzahlen verteufeln. Oft haben sie auch recht, aber hier geht es nicht ohne!
Und das mit der Rechenzeit, die eine float berechnung braucht, ist nicht so schlimm. Du kannst das selber austesten:

Probier mal das aus:
deklariere die Variablen MittelRohwert, Filterfaktor und Teiler als float.
Dann baust du 2 Zeitmessstellen ein und die Ausgabe.

  unsigned long TP1, TP2;
  TP1 = micros();
  MittelRohwert = (Rohwert + MittelRohwert * Filterfaktor) / Teiler;
  TP2 = micros();
  Serial.print("                                   Rechendauer = ");Serial.println(TP2-TP1);

Damit kriegst du die Zeit, die er für die Berechnung braucht.
Du wirst sehen, das ist halb so wild.

Und, nochmal: Mit Ganzzahlarithmetik funktioniert die Formel nicht!
Je größer dein Filterfaktor wird, um so größer wird der Fehler!

Zum Beweis habe ich dir noch mal das Excel-sheet drangehängt, erweitert um einen Reiter, der ganzzahl und float vergleicht.

Tiefpassfilter_digital.xlsx (64.6 KB)