最近在做一个plussensor的心率传感器测心率的实验而且要在LCD1602A上显示出来,老师要求直接把测得串口数据进行处理得到心率,我设置了一个阈值,高于阈值就相当于一次心跳,然后计算了两个波形峰值之间的时间,但是测得结果很不准确,求各位网友解答,帮帮孩子吧,如果有更改的代码就最好了。一下是我写的代码。
#define heartPin 0
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int heartValue = 0;
int flag=0;
float time1=0;
float time2=0;
float t=0;
int BPM=0;
void setup()
{
lcd.begin(16,2);
lcd.init();
lcd.backlight();
Serial.begin(115200);
lcd.setCursor(0, 0);
lcd.print("HeartRate");
}
void loop()
{
int heartValue = analogRead(heartPin);
Serial.println(heartValue);
if (heartValue>510 and flag==0)
{
time1=millis();
time2=time1;
flag=1;
}
if(flag==1 and heartValue>510)
{
time1=millis();
t=time1-time2;
time2=time1;
}
BPM = 60000/t;
lcd.setCursor(0,1);
lcd.print("BPM:");
lcd.setCursor(4,1);
lcd.print(BPM);
delay(500);
}