/* PulseRateCode: IR Pulse Rate Monitor w/external R2 */ int ledPin = 12; int sensorPin = A0; double alpha = 0.75; int period = 20; double change = 0.0; void setup( ) { pinMode(ledPin, OUTPUT); } void loop( ) { static double oldVal = 0; static double oldChange = 0; int rawVal = analogRead(sensorPin); double val = alpha * oldVal + (1 - alpha) * rawVal; change = val - oldVal; digitalWrite(ledPin, (change < 0.0 && oldChange > 0.0)); oldVal = val; oldChange = change; delay(period); } // END