plussensor

最近在做一个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);
}