Mittelwert bilden...

Hallo,

als Anfänger hätte ich mal eine Frage bezüglich einer Mittelung der Werte. Wie würde eine einfache Mittelung hier aussehen und wie ein gleitender Mittelwert. Danke schon im Voraus.

void setup() {
}

void loop() {

int sensorValue = analogRead(A0);
Serial.println(sensorValue);
}

Könnte man so machen.

float Val;
int Eingangswert,j;

void setup() {  
  Serial.begin(115200);
  Serial.print("IN\t"); Serial.print("OUT\t\n"); 
}

void loop() {   
  int Eingangswert = analogRead(A0); 
  Serial.print(Eingangswert); Serial.print("\t"); 
  Filtern(Val, Eingangswert, 100);
  Serial.print(Val); Serial.print("\t\n"); 
}


/*************************************************************************************************
** Funktion Filtern()  by GuntherB								**
**************************************************************************************************
** Bildet einen Tiefpassfilter (RC-Glied) nach.							**
** FF = Filterfaktor;  Tau = FF / Aufruffrequenz						**
**  												**
**  												**
**  											   	**
**  Input: FiltVal der gefilterte Wert, NewVal der neue gelesene Wert; FF Filterfaktor		**
**  Output:	FiltVal										**
**  genutzte Globale Variablen: 	keine							**
**************************************************************************************************/
void Filtern(float &FiltVal, int NewVal, int FF){
  FiltVal= ((FiltVal * FF) + NewVal) / (FF +1);  
}

Wenn du die Funktion filtern() in festen Zeitabständen aufruft, hast du einen Tiefpassfilter, dessen Grenzfrequenz mit FF und der Aufruffrequenz beeinflusst wird.

Hallo,

jetzt hast Du Deine Funktion nochmal optimiert. Respekt! :slight_smile:

Vielen dank für die schnelle Hilfe :slight_smile:

Grüße Daniel