search
[last updated: 2025-07-13]
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
if (sensorValue > threshold) {
digitalWrite(ledPin, HIGH);
if (startTime == 0) {
startTime = millis();
}
} else {
digitalWrite(ledPin, LOW);
if (startTime != 0) {
endTime = millis();
pulseCount++;
unsigned long pulseInterval = endTime - startTime;
startTime = 0;
if (pulseInterval > 100) { // Filter out very short intervals (noise)
beatsPerMinute = 60000.0 / pulseInterval;
smoothedBPM = (smoothingFactor * beatsPerMinute) + ((1.0 - smoothingFactor) * smoothedBPM);
Serial.print("BPM: ");
Serial.println(smoothedBPM);
}
}
}
delay(1); // Small delay to avoid excessive readings
}
-----------------------------
eof