Pulssensor Arduino, Störungen?
Hi, ich habe gerade ein Projekt, bei der ich ein Herz nach meinem Puls blinken lassen will. Um den Sensor zu testen benutze ich einen online gestellten Code, welcher weiter unten zu finden ist. Grundsätlich funktioniert auch alles, der Puls wird angenommen und die LED blinkt in meiner Herzfrequenz, allerdings wenn mein Finger nicht drauf ist, gibt es solche Störungen, dass die Leds nur dumm flackern. Bilder vom richtigen Signal und Störungen sind beide im Anhang. Wie kann ich das am besten raus filterm, dass nix leuchtet, wenn kein finger drauf ist, aber es nach der herzfrequenz leuchtet wenn mein finger drauf ist. Klar würde es klappen wenn ich einen anderen knopf habe, welchen ich drücken muss, wenn mein finger drauf ist, dass die leds dann erst angehen und ich das flacken wie ausschalte, aber ich will das ohne knopf haben. Hat wer Vorschläge, oder besser, vielleicht eine fertigen Code? Danke im Voraus für Antworten :)
Störungen:
Puls:
Code:
// Konstanten und Variablen definieren
const int pulsePin = A0; // Pin, an den der Puls-Sensor angeschlossen ist
const int ledPin = 13; // Eingebaute LED-Pin des Arduino
const int threshold = 515; // Schwellenwert für den Pulswert
const int stabilityThreshold = 50; // Schwellenwert für die Stabilität des Pulswertes
int pulseValue = 0; // Variable zur Speicherung des Pulswertes
int previousPulseValue = 0; // Variable zur Speicherung des vorherigen Pulswertes
void setup() {
pinMode(ledPin, OUTPUT); // LED-Pin als Ausgang definieren
Serial.begin(9600); // Serielle Kommunikation starten
}
void loop() {
pulseValue = analogRead(pulsePin); // Pulswert vom Sensor lesen
Serial.println(pulseValue); // Pulswert an den seriellen Monitor senden
// Überprüfen, ob der Pulswert stabil ist
if (abs(pulseValue - previousPulseValue) < stabilityThreshold) {
// LED ein- oder ausschalten basierend auf dem Schwellenwert
if (pulseValue > threshold) {
digitalWrite(ledPin, HIGH); // LED einschalten
} else {
digitalWrite(ledPin, LOW); // LED ausschalten
}
} else {
// Wenn der Pulswert nicht stabil ist, LED ausschalten
digitalWrite(ledPin, LOW);
}
previousPulseValue = pulseValue; // Aktuellen Pulswert speichern
delay(50); // Kurze Verzögerung für stabilere Werte
}
