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: 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;"
:
Bearbeitet durch User
Wahrscheinlich kommst du schneller ans Ziel, wenn du zuerst ein C Tutorial durcharbeitest, das Zeiger, Adressen, Referenzen, Arrays und Strukturen erklärt. Da muss man halt ein paar Übungen durcharbeiten, bis man sich an die Syntax und die feinen Unterschiede gewöhnt hat.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.