Der Herzschlag-Sensor |
Das Programm liest nun praktisch den Sensor-Wert und sendet diesen über die serielle Schnittstelle an den Computer wo die Daten weiterverarbeitet werden können (z.B. mit Matlab, darüber werde ich vielleicht im nächsten Post etwas schreiben). Hier ist ein Bild von den geplotteten Daten mit Matlab und darunter der Code für den 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;
}