Vor einer Weile hatte ich einen Höhenmesser angefangen und diesen weitgehend fertig gestellt was das Gehäuse und der Hardware betrifft.
Um voran zu kommen habe ich das Gerät zum laufen gebracht indem jede Sekunde der zuvor gemessene Wert auf dem Display angezeigt wird. Jedoch schwankt der Wert ziemlich und ich möchte das jetzt etwas dämpfen.
Die Idee war alle 100 ms eine Messung zu addieren, diese dann nach 10 Messungen am Ende durch 10 zu dividieren und dann erst anzuzeigen. Von mir aus auch 10 ms delay und 100 Messungen.
Leider tue ich mich als Anfänger etwas schwer. Hier ist anscheinend eine Lösung aber irgendwie bekomme ich es nicht hin:
Da im originalen Programm ein Drehencoder zum einstellen des Atmosphärendruck und das OLED Display usw. eingebunden sind habe ich hier mal nur den Teil der Druckmessung herauskopiert.
Kann mir da jemand etwas weiter helfen? Ist das überhaupt so möglich?
Grüße
#include "BMP280.h"
#define P0 1013.25 //mittlere Luftdruck in Meereshöhe (im Programm veränderbar)
BMP280 bmp;
void setup() {}
void loop(void) {
double T, P;
char result = bmp.startMeasurment();
if (result != 0) {
delay(result);
result = bmp.getTemperatureAndPressure(T, P);
if (result != 0) {
double A = (bmp.altitude(P, P0) * 3.28084); //Umrechnung von Meter in Fuß
delay(1000);
}
}
}
Vll. hilft Dir ein Running_Median. meine ZIP ist nur einen Klick entfernt - hier im Forum
Du gibst an, wie viele Messwerte Du zusammen fassen willst.
Diese Messwerte werden sortiert.
Bei jedem Messwert, Den Du 'rein schiebst', bekommst Du als Rückgabe den jetzt mittig stehenden Messwert dieser Liste zurück - oder fragst Diesen separat an, ohne einen neuen Wert eingeben zu müssen.
Meine Änderung bestand nur darin, daß ich den Median auf beliebige Datentypen umgestrickt habe, das Original (in der SHARP-Bibliothek) läuft mit int (16 Bit, signed).