TroubleshootingGravity

SEN0344 Code Issue

userHead Account cancelled 2021-02-06 17:59:32 941 Views2 Replies

Hi,

I am following this tutorial (sample code 3) to obtain HR and SpO2 readings. (https://wiki.dfrobot.com/Heart_Rate_and_Oximeter_Sensor_SKU_SEN0344).

I found that it gives me readings every 4 seconds, however I am looking to receive data in real time or every 0.5 /1 second instead. Does anyone know how I can achieve this?
There doesn't seem to be a part of the code that I can amend to change the intervals. I have attached the zipped library provided.

Deeply appreciate any help. Thank you.

2022-05-13 03:58:39

Hey, I'm trying to use the library and code along with the HC-05 bluetooth module. When I don't import the module I get the HR and SPO2 values.

As soon as I import the SoftwareSerial library, I don't get any output at all.

 

Here's the code: 

#include <DFRobot_MAX30102.h>

DFRobot_MAX30102 particleSensor;

#include <SoftwareSerial.h>

SoftwareSerial EEBlue(2,3);

 

/*Macro definition options in sensor configurationsampleAverage: SAMPLEAVG_1 SAMPLEAVG_2 SAMPLEAVG_4              SAMPLEAVG_8 SAMPLEAVG_16 SAMPLEAVG_32ledMode:       MODE_REDONLY  MODE_RED_IR  MODE_MULTILEDsampleRate:    PULSEWIDTH_69 PULSEWIDTH_118 PULSEWIDTH_215 PULSEWIDTH_411pulseWidth:    SAMPLERATE_50 SAMPLERATE_100 SAMPLERATE_200 SAMPLERATE_400              SAMPLERATE_800 SAMPLERATE_1000 SAMPLERATE_1600 SAMPLERATE_3200adcRange:      ADCRANGE_2048 ADCRANGE_4096 ADCRANGE_8192 ADCRANGE_16384*/void setup(){ //Init serial Serial.begin(115200); /*!  *@brief Init sensor   *@param pWire IIC bus pointer object and construction device, can both pass or not pass parameters (Wire in default)  *@param i2cAddr Chip IIC address (0x57 in default)  *@return true or false  */ while (!particleSensor.begin()) {   Serial.println("MAX30102 was not found");   delay(1000); }

 /*!  *@brief Use macro definition to configure sensor   *@param ledBrightness LED brightness, default value: 0x1F(6.4mA), Range: 0~255(0=Off, 255=50mA)  *@param sampleAverage Average multiple samples then draw once, reduce data throughput, default 4 samples average  *@param ledMode LED mode, default to use red light and IR at the same time   *@param sampleRate Sampling rate, default 400 samples every second   *@param pulseWidth Pulse width: the longer the pulse width, the wider the detection range. Default to be Max range  *@param adcRange ADC Measurement Range, default 4096 (nA), 15.63(pA) per LSB  */ particleSensor.sensorConfiguration(/*ledBrightness=*/90, /*sampleAverage=*/SAMPLEAVG_4, \                       /*ledMode=*/MODE_MULTILED, /sampleRate=/SAMPLERATE_100, \                       /*pulseWidth=*/PULSEWIDTH_411, /*adcRange=*/ADCRANGE_16384);}

int32_t SPO2; //SPO2int8_t SPO2Valid; //Flag to display if SPO2 calculation is validint32_t heartRate; //Heart-rateint8_t heartRateValid; //Flag to display if heart-rate calculation is valid

void loop(){ Serial.println(F("Wait about four seconds")); particleSensor.heartrateAndOxygenSaturation(/**SPO2=*/&SPO2, /**SPO2Valid=*/&SPO2Valid, /**heartRate=*/&heartRate, /**heartRateValid=*/&heartRateValid); //Print result  Serial.print(F("heartRate=")); Serial.print(heartRate, DEC); Serial.print(F(", heartRateValid=")); Serial.print(heartRateValid, DEC); Serial.print(F("; SPO2=")); Serial.print(SPO2, DEC); Serial.print(F(", SPO2Valid=")); Serial.println(SPO2Valid, DEC);

 

     String str = "HR=" + String(heartRate);     int str_len = str.length()+1;      char char_array[str_len];     str.toCharArray(char_array, str_len);     Serial.print(char_array[str_len-1]);     EEBlue.write(char_array,str_len);

}

userHeadPic ShashankS
2021-02-07 11:01:39 Now we are using the official algorithm, which has not been optimized. We will update the library of this sensor in the near future. userHeadPic 347945801