const int sensorPin = A1; // Pin, an dem der Sensor angeschlossen ist
int sensorWert = 0; // Variable, um den Sensorwert zu speichern
unsigned int counter = 0; // Zähler für tiefe Lesezahlen vom Sensor
bool isTief = true; // Flag, um einen true oder false Wert zu speichern
unsigned long startMillis; // Variable zur Aufzeichnung des Startzeitpunkts
unsigned long endMillis; // Variable zur Aufzeichnung des Endzeitpunkts
int sum = 0; // Variable zur Speicherung des Summenwerts
int average = 0; // Variable zur Speicherung des Mittelwerts
int i = 0; // Zähler für die Durchführung von 3 Messungen
void setup() {
pinMode(sensorPin, INPUT); // Setze den Sensorpin als Eingang
Serial.begin(9600); // Starte die serielle Kommunikation mit 9600 Baud
}
void loop() {
startMillis = millis(); // Merke den Startzeitpunkt
endMillis = startMillis + 3000; // Berechne den Endzeitpunkt
while (millis() < endMillis) {
sensorWert = analogRead(sensorPin); // Schreibe den Wert des Sensors in die Variable "sensorWert"
if (sensorWert < 550) { // Wenn die Lesezahl tief ist
if (isTief) { // und sie vorher nicht tief war
counter++; // Inkrementiere den Zähler
isTief = false; // Setze das Flag
}
}
else {
isTief = true; // Wenn die Lesezahl nicht tief ist, setze das Flag zurück
}
}
// Berechne die Summe (hochgerechnet auf eine Minute)
sum += counter * 20;
counter = 0; // Setze den Zähler zurück
i++; // Inkrementiere den Zähler für die Messungen
if (i == 3) { // Wenn die dritte Messung durchgeführt wurde
average = sum / 3; // Berechne den Mittelwert (hochgerechnet auf eine Minute)
// Überprüfe, ob der Mittelwert negativ ist und setze ihn auf 0, wenn ja
average = max(average, 0);
Serial.println("Summe: " + String(sum, DEC)); // Drucke die Summe auf dem seriellen Monitor aus
Serial.println("Mittelwert: " + String(average, DEC)); // Drucke den Mittelwert auf dem seriellen Monitor aus
i = 0; // Setze den Zähler für die Messungen zurück
sum = 0; // Setze die Summe zurück
}
}