請注意手指心跳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
