Skip to content

MKR1000_BPM_ALTERNATIVE :Edit #74

@biojisoo

Description

@biojisoo

Hello! I test with this sensor with MKR1000

I understood that BPM_ALTERNATIVE code can print BPM on serial monitor

with MKR1000 but I want to see only BPM..

I thought that I need to edit pulsesensorserial.cpp to print BPM(not with IBI etc)

so I edited like

`/*
Formatting of Serial output from PulseSensors.
See https://www.pulsesensor.com to get started.

Copyright World Famous Electronics LLC - see LICENSE
Contributors:
Joel Murphy, https://pulsesensor.com
Yury Gitman, https://pulsesensor.com
Bradford Needham, @bneedhamia, https://bluepapertech.com

Licensed under the MIT License, a copy of which
should have been included with this software.

This software is not intended for medical use.
*/
#include "PulseSensorSerialOutput.h"

PulseSensorSerialOutput::PulseSensorSerialOutput() {
pOutput = NULL;
OutputType = SERIAL_PLOTTER;
}

void PulseSensorSerialOutput::setSerial(Stream &output) {
pOutput = &output;
}

Stream *PulseSensorSerialOutput::getSerial() {
return pOutput;
}

void PulseSensorSerialOutput::setOutputType(byte outputType) {
OutputType = outputType;
}

void PulseSensorSerialOutput::outputSample(PulseSensor sensors[], int numSensors) {
if (!pOutput) {
return; // no serial output object has been set.
}

switch (OutputType) {
case SERIAL_PLOTTER:
if (numSensors == 1) {
pOutput->print(sensors[0].getBeatsPerMinute());
// pOutput->print(F(","));
// pOutput->print(sensors[0].getInterBeatIntervalMs());
pOutput->print(F(","));
pOutput->println(sensors[0].getLatestSample());
} else {
for (int i = 0; i < numSensors; ++i) {
if (i != 0) {
pOutput->print(F(","));
}
pOutput->print(sensors[i].getLatestSample());
// Could output BPM and IBI here.
}
pOutput->println();
}
break;

case PROCESSING_VISUALIZER:
  // Don't print bpm and ibi here; they're printed per-beat.
  if (numSensors == 1) {
    outputToSerial('S', sensors[0].getLatestSample());
  } else {
    // PulseSensor 0 = a; #1 = b; #2 = c, etc.
    for(int i = 0; i < numSensors; ++i){
      outputToSerial('a' + i, sensors[i].getLatestSample());
    }
  }
  break;

default:
  // unknown output type: no output
  break;

}
}

void PulseSensorSerialOutput::outputBeat(PulseSensor sensors[], int numSensors, int sensorIndex) {
if (!pOutput) {
return; // no serial output object has been set.
}

switch (OutputType) {
case SERIAL_PLOTTER:
/*
The plotter doesn't understand occasionally-printed data,
so we print nothing per-beat.
*/
break;

case PROCESSING_VISUALIZER:
  if (numSensors == 1) {
    outputToSerial('B', sensors[sensorIndex].getBeatsPerMinute());
   // outputToSerial('Q', sensors[sensorIndex].getInterBeatIntervalMs());
  } else {
    // PulseSensor 0 = A, M; #1 = B, N; etc.
    outputToSerial('A' + sensorIndex
      , sensors[sensorIndex].getBeatsPerMinute());
    //outputToSerial('M' + sensorIndex
      //, sensors[sensorIndex].getInterBeatIntervalMs());
  }
  break;

default:
  // unknown output type: no output
  break;

}
}

// // testing feedback
// void printThreshSetting() {
//
// }

void PulseSensorSerialOutput::outputToSerial(char symbol, int data) {
if (!pOutput) {
return; // no serial output object has been set.
}

pOutput->print(symbol);
pOutput->println(data);
}
`

but it still prints all in serial monitor..

How can I get only BPM value from it to store value in one variable& print in serial monitor?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions