Herunterladen Inhalt Inhalt Diese Seite drucken

Joy-it SensorKit X40 Kurzbeschreibung Seite 6

Inhaltsverzeichnis

Werbung

KY-039 Herzschlag Sensor Modul
////////////////////////////////////////////////////////////////////////
/// @param[in] IRSensorPin Analog PI an welchen der Sensor angeschlossen ist
/// @param[in] delay (msec) Die Verzoegerung zwischen den Aufrufen der Abtastfunktion.
//
///
///
///
/// @Kurzbeschreibung
/// Dieser Code stellt eine sog. Peak-Detection dar.
/// Es wird kein Herzschlagverlauf aufgezeichnet, sondern es
/// wird innerhalb der aufgezeichneten Daten nach "Peaks" (Spitzen) gesucht,
/// und per LED angezeigt. Mittels der bekannten Delay Abstaende, kann somit
/// grob der Puls errechnet werden.
////////////////////////////////////////////////////////////////////////
int rawValue;
bool heartbeatDetected(int IRSensorPin, int delay)
{
static int maxValue = 0;
static bool isPeak = false;
bool result = false;
rawValue = analogRead(IRSensorPin);
// Hier wird der aktuelle Spannungswert am Fototransistor ausgelesen und in der rawValue-Vari
rawValue *= (1000/delay);
// Sollte der aktuelle Wert vom letzten maximalen Wert zu weit abweichen
// (z.B. da der Finger neu aufgesetzt oder weggenommen wurde)
// So wird der MaxValue resetiert, um eine neue Basis zu erhalten.
if (rawValue * 4L < maxValue) {
if (rawValue > maxValue - (1000/delay)) {
// Hier wird der eigentliche Peak detektiert. Sollte ein neuer RawValue groeßer sein
// als der letzte maximale Wert, so wird das als Spitze der aufgezeichnten Daten erkannt.
if (rawValue > maxValue) {
maxValue = rawValue;
}
// Zum erkannten Peak soll nur ein Herzschlag zugewiesen werden
if (isPeak == false) {
result = true;
}
isPeak = true;
} else if (rawValue < maxValue - (3000/delay)) {
isPeak = false;
// Hierbei wird der maximale Wert bei jeden Durchlauf
// etwas wieder herabgesetzt. Dies hat den Grund, dass
// nicht nur der Wert sonst immer stabil bei jedem Schlag
// gleich oder kleiner werden wuerde, sondern auch,
// falls der Finger sich minimal bewegen sollte und somit
// das Signal generell schwaecher werden wuerde.
maxValue-=(1000/delay);
}
return result;
}
////////////////////////////////////////////////////////////////////////
// Arduino main code
////////////////////////////////////////////////////////////////////////
int ledPin=13;
int analogPin=0;
void setup()
{
Ausgabe: 14.06.2021
Die besten Ergebnisse erhaelt man, wenn man 5 mal Pro Herzschlag abtastet.
Nicht langsamer als 150mSec für z.B. 70 BPM Puls
Besser waere 60 mSec für z.B. bis zu einen Puls von 200 BPM.
maxValue = rawValue * 0.8;
Copyright by Joy-IT - Published under CC BY-NC-SA 3.0
}
// Detect new peak
Seite
6
von
10

Werbung

Inhaltsverzeichnis
loading

Diese Anleitung auch für:

Ky-039

Inhaltsverzeichnis