Hallo ihr lieben,
ich versuche gerade für einen Projekt, wo ich den Luftdruck überwachen soll, alle 2 Sekunden Druckwerte zu ermitteln und für 8 Messwerte den Mittelwert von dem Druckwert zu ermitteln.
Ich wollte folgendermaßen vorgehen. Meine Druckwerte alle zwei Sekunden in einem Array abspeichern und zum Schluss den Mittelwert aller ermittelten Druckwerte (8 Werte) bilden.
Ich habe lieber mit der Funktion millis(); gearbeitet, da mit delay die Sekunden draufaddiert werden und die Wartezeit verlängert wird.
Nur irgendwie habe ich denke ich einen Fehler drin. Bei einem Druckwert zwischen 7-7,5 mbar spuckt mir das Ding einen Mittelwert von 0,8 mbar oder manchmal 0mbar aus.
Irgendwo habe ich einen Denkfehler drin, könnt ihr mir weiterhelfen ?
Hier mein Programmausschnitt:
float test[7];
int anzahl = 8;
int k = 0;
....
// Intervall in Millisekunden
unsigned long previousMillis = 0;
const long interval = 16000;
const long interval_1 = 2000;
....
void loop()
{
// Millieinstellung
unsigned long currentMillis = millis();
float mittel, summe = 0;
....
// Ausgabe von den Druckwerten
if (k <= anzahl)
{
// Ausgabe von meinen Werten:
if ((currentMillis - previousMillis >= interval_1) && (currentMillis - previousMillis <= interval))
{
Serial.print("Druck= ");
Serial.print(sensorValue, 2);
Serial.println(" mbar");
test[k] = sensorValue;
summe = summe + test[k];
k++;
delay(2000);
}
}
if (k > anzahl)
{
return summe;
}
mittel = summe / anzahl;
// Mittelwert ausgeben:
if (currentMillis - previousMillis >= interval)
{
Serial.print("Mittelwert= ");
Serial.print(mittel);
Serial.println(" mbar");
}
if (currentMillis - previousMillis >= interval)
{
exit(0);
}
}