The heartbeat sensor |
The program reads the sensor value and sends it to the computer via the serial port where you can further process the data (e.g. with Matlab, maybe I will write a post about that). Here is a picture of the plotted heartbeat data on the computer and below the code for the Arduino.
//Define pins for LED and sensor.
int ledPin = 13;
int sensorPin = 0;
//alpha is used in the original proposed code by the company (see below).
double alpha = 0.75;
//lasttime is used to have a very precise measurement of the time so the calculated pulse is correct.
unsigned long lasttime;
void setup ()
{
//Switch on the LED.
pinMode (ledPin, OUTPUT);
digitalWrite(ledPin,HIGH);
Serial.begin (9600);
lasttime = micros();
}
void loop ()
{
//Also used for smoothening the signal.
static double oldValue = 0;
//Wait 10 ms between each measurement.
while(micros() - lasttime < 10000)
{
delayMicroseconds(100);
}
//Read the signal.
int rawValue = analogRead (sensorPin);
lasttime += 10000;
//In the "original" code example, "value" was sent to the computer. This calculation basically smoothens "rawValue".
//double value = alpha * oldValue + (1 - alpha) * rawValue;
//Send back the measured value.
Serial.println (rawValue);
oldValue = value;
}