ESP Sensor Signal Filtern

OP #7385932
Lesenswert?

Hallo,

ich möchte den Filter (die Filter) aus diesem Tutorial in meinen ESP Sketch integrieren: https://morf.lv/implementing-pulse-oximeter-using-max30100/

Zunächst geht es um den: butterworthFilter_t

Hier der Code aus dem Tutorial:

struct butterworthFilter_t { float v[2]; float result; }; void MAX30100::lowPassButterworthFilter( float x, butterworthFilter_t * filterResult ) {
filterResult->v[0] = filterResult->v[1];

//Fs = 100Hz and Fc = 10Hz filterResult->v[1] = (2.452372752527856026e-1 * x) + (0.50952544949442879485 * filterResult->v[0]);

//Fs = 100Hz and Fc = 4Hz //filterResult->v[1] = (1.367287359973195227e-1 * x) + (0.72654252800536101020 * filterResult->v[0]); //Very precise butterworth filter

filterResult->result = filterResult->v[0] + filterResult->v[1]; }

Die ganze Libary plus Beispiel gibt es auf Github:

https://github.com/xcoder123/MAX30100

Jetzt zu meiner Frage:

Ich habe hier eine structur butterworthFilter_t, darin habe ich nun result als Variable und als Array v[2] vom Typ float (da der Index bei 0 anfängt sind es also v[0] und v[1]).

Weiters ist "void MAX30100::lowPassButterworthFilter( float x, butterworthFilter_t * filterResult )" dies meine Funktion in der ich die Variable float x lade, sowie meine structur butterworthFilter_t bei der nun der Zeiger * filterResult zugeordnet wird und in meiner Libary (.cpp/ oder .h?) müsste noch der Zeiger filterResult definiert sein, oder? Oder ist filterResult eine structur? (Das meinte jemand, aber mit -> zeige ich ja auf v[0], [1] oder result, ein Zeiger kann ja keine structur sein, oder? Ich finde weder eine structur noch einen definierten Zeiger, der müsste ja in etwa so aussehen? > filterResult = (int) malloc(sizeof(int));) und nun könnte ich die Daten über filterResult (irgend eine Adresse); &filterResult (Adresse des Zeigers) oder *filterResult der Wert auf dem dieser zeigt, abrufen, richtig?)

Würde mich sehr freuen, wenn mir da wer weiterhelfen kann (hab erst heute angefangen mich mit Zeiger und Strukturen zu befassen, so ganz habe ich es noch nicht durchblickt).

LG

PS: Hier ist noch restlicher Code den ich rausgesucht habe:

".h

class MAX30100 { public: MAX30100( Mode mode = DEFAULT_OPERATING_MODE, SamplingRate samplingRate = DEFAULT_SAMPLING_RATE, LEDPulseWidth pulseWidth = DEFAULT_LED_PULSE_WIDTH, LEDCurrent IrLedCurrent = DEFAULT_IR_LED_CURRENT, bool highResMode = true, bool debug = false );

void lowPassButterworthFilter( float x, butterworthFilter_t * filterResult );

private:

1
butterworthFilter_t lpbFilterIR;

};

struct butterworthFilter_t { float v[2]; float result; };


.cpp

lowPassButterworthFilter( meanDiffResIR/-dcFilterIR.result/, &lpbFilterIR );

float meanDiffResIR = meanDiff( dcFilterIR.result, &meanDiffIR);

lpbFilterIR.v[0] = 0; lpbFilterIR.v[1] = 0; lpbFilterIR.result = 0;"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren