Pulse Sensor - BPM only recorded using tapping movement rather than holding it down. Need help!

#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>

#define TFT_CS 10
#define TFT_RST 9
#define TFT_DC 8

const int PulseWire = 0;
const int LED13 = 13;
int Threshold = 550;

// Create display:
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
PulseSensorPlayground pulseSensor;


// Add a custom font
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSerifItalic9pt7b.h>
#include <Fonts/FreeMono9pt7b.h>


void setup() {
  Serial.begin(9600);

  pulseSensor.analogInput(PulseWire);
  pulseSensor.blinkOnPulse(LED13);
  pulseSensor.setThreshold(Threshold);

  if (pulseSensor.begin()) {
    Serial.println("Meauring your pulse....");
  }
  tft.initR(INITR_BLACKTAB);
  uint16_t time = millis();
  tft.fillScreen(ST7735_BLACK);
  time = millis() - time;
  Serial.println(time, DEC);
  delay(500);

  tft.fillScreen(ST7735_BLACK);
  tft.setTextWrap(false);
  tft.setRotation(3);
  tft.setCursor(25, 5);
  tft.setTextColor(ST7735_WHITE);
  tft.setTextSize(1);
  tft.println("HELLO! WELCOME TO");
  tft.setCursor(30, 15);
  tft.setTextColor(ST7735_WHITE);
  tft.setTextSize(1);
  tft.println("SYIRAH'S CLINIC!");
  tft.drawRect(20, 0, 115, 30, ST7735_WHITE);

  tft.setFont(&FreeSansBold9pt7b);
  tft.setTextSize(0);
  tft.setCursor(10, 55);
  tft.setTextColor(ST7735_BLUE);
  tft.println("Collecting data...");
  tft.setTextWrap(true);
  tft.setCursor(20, 95);
  tft.setTextColor(ST7735_YELLOW);
  tft.println("Please wait...");
  delay(3200);

  tft.setTextWrap(false);
  tft.setCursor (0, 0);
  tft.initR(INITR_BLACKTAB);
  tft.fillScreen(ST77XX_BLACK);
  tft.setRotation(3);
  tft.setFont(&FreeSansBold9pt7b);
  tft.setTextSize(0);
  tft.fillRect(0, 0, 70, 70, ST7735_RED);

  tft.setCursor(5, 40);
  tft.setTextColor(ST77XX_WHITE);
  tft.println("PULSE:");
  tft.setFont();

  tft.fillRect(0, 70, 70, 60, 0x237B);
  tft.setFont(&FreeSansBold9pt7b);
  tft.setTextSize(0);
  tft.setCursor(5, 105);
  tft.setTextColor(ST77XX_WHITE);
  tft.println("TEMP:");
  tft.drawLine(0, 70, 180, 70, ST7735_WHITE);
  tft.setFont();

} // End of setup

void loop() {
  int myBPM = pulseSensor.getBeatsPerMinute();
  if (pulseSensor.sawStartOfBeat()) {
    Serial.println("Heartbeat Detected ");
    Serial.print("BPM: ");
    Serial.println(myBPM);
  }
  delay(20);


  tft.setCursor(83, 33);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextSize(2);
  tft.println(myBPM);
  tft.setCursor(123, 33);
  tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
  tft.setTextSize(2);
  tft.println("BPM");

}

Hi!

I am working on a school project using a Pulse Sensor from pulsesensor.com and Adafruit ST7735 1.8 LCD Display. The code works fine, but it only records my BPM when I perform a tapping movement, which gives an inaccurate BPM. I want this Pulse Sensor to record my BPM continuously as I hold it down instead of tapping it continuously. Is there anything that needs to change or add to this code? Thanks in advance! 

Hi- you might try reading the support documentation for PulseSensorPlayground.h. My guess is that it has to do with the threshold value (int Threshold = 550), how pulseSensor.sawStartOfBeat() works, or how pulseSensor.getBeatsPerMinute() works. What you’ve described sounds like a triggering issue (tapping is detected but not pressing.) I found this documentation that might help: https://github.com/WorldFamousElectronics/PulseSensorPlayground/blob/8ee0917e458aba87ad2482034e04b1540c83ab97/resources/PulseSensor%20Playground%20Tools.md
You can also try contacting pulsesensor.com through their website.