請注意手指心跳Sensor的腳位,詳細可參考該高手的網站。
| 麵包板腳位情形 | 
Code
const int ledPin = 13;
const int sensorPin = A0;
const double alpha = 0.75;              // smoothing參數 可自行調整0~1之間的值
const double beta = 0.5;                // find peak參數 可自行調整0~1之間的值
const int period = 20;                  // sample脈搏的delay period
void setup()
{
    //pinMode(buttonPin, INPUT);
    pinMode(ledPin, OUTPUT);
    Serial.begin(115200);               // Set the baud rate of the Serial Monitor
    //BTSerial.begin(9600);               // HC-06 baud rate 預設為9600
}
void loop()
{
    senseHeartRate();                   // 測量心跳
    
}
//   測量心跳並用藍芽傳給Android
//  讀入sensor的值
//  對值做smoothing
//  找出值得peak,即為有heart beat產生
//  計算每分鐘心跳頻率,用藍芽傳給手機
void senseHeartRate()
{
    int count = 0;                              // 記錄心跳次數
    double oldValue = 0;                        // 記錄上一次sense到的值
    double oldChange = 0;                       // 記錄上一次值的改變
       
    unsigned long startTime = millis();         // 記錄開始測量時間
   
    while(millis() - startTime < 10000) {       // sense 10 seconds
        int rawValue = analogRead(sensorPin);   // 讀取心跳sensor的值
        double value = alpha*oldValue + (1-alpha)*rawValue;     //smoothing value
   
        //find peak
        double change = value-oldValue;         // 計算跟上一次值的改變量
        if (change>beta && oldChange<-beta) {   // heart beat
            count = count + 1;
        }
         
        oldValue = value;
        oldChange = change;
        delay(period);
    }
    Serial.print(count);
    Serial.print(",");
    //BTSerial.println(count*6);          //use bluetooth to send result to android
}
參考網站
 http://here-apps.blogspot.tw/2014/07/lab3-arduino.html

