Ran

hirushanan.'s picture
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Compiler/Assembler: 

#include "MAX30100_PulseOximeter.h"

#define REPORTING_PERIOD_MS 1000

#define Heart_dis_addr 0x01

#define Sop2_dis_addr 0x05

#define connect_sta_addr 0x08

unsigned char heart_rate_send[8]= {0xA5, 0x5A, 0x05, 0x82,\

0x00, Heart_dis_addr, 0x00, 0x00};

unsigned char Sop2_send[8]= {0xA5, 0x5A, 0x05, 0x82, 0x00, \

Sop2_dis_addr, 0x00, 0x00};

unsigned char connect_sta_send[8]={0xA5, 0x5A, 0x05, 0x82, 0x00, \

connect_sta_addr,0x00, 0x00};

// PulseOximeter is the higher level interface to the sensor

// it offers:

// * beat detection reporting

// * heart rate calculation

// * SpO2 (oxidation level) calculation

PulseOximeter pox;

uint32_t tsLastReport = 0;

// Callback (registered below) fired when a pulse is detected

void onBeatDetected()

{

// Serial.println("Beat!");

}

void setup()

{

Serial.begin(115200);

// Serial.print("Initializing pulse oximeter..");

// Initialize the PulseOximeter instance

// Failures are generally due to an improper I2C wiring, missing power supply

// or wrong target chip

if (!pox.begin())
{

// Serial.println("FAILED");

// connect_sta_send[7]=0x00;

// Serial.write(connect_sta_send,8);

for(;;);

}
else
{

connect_sta_send[7]=0x01;

Serial.write(connect_sta_send,8);

// Serial.println("SUCCESS");

}

// The default current for the IR LED is 50mA and it could be changed

// by uncommenting the following line. Check MAX30100_Registers.h for all the

// available options.

pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);

// Register a callback for the beat detection

pox.setOnBeatDetectedCallback(onBeatDetected);

}

void loop()

{

// Make sure to call update as fast as possible

pox.update();

// Asynchronously dump heart rate and oxidation levels to the serial

// For both, a value of 0 means "invalid"

if (millis() - tsLastReport > REPORTING_PERIOD_MS)
{

// Serial.print("Heart rate:");

// Serial.print(pox.getHeartRate());

// Serial.print("bpm / SpO2:");

// Serial.print(pox.getSpO2());

// Serial.println("%");

heart_rate_send[7]=(uint32_t)pox.getHeartRate();

Serial.write(heart_rate_send,8);

Sop2_send[7]=pox.getSpO2();

Serial.write(Sop2_send,8);

tsLastReport = millis();

}

}
// By Kapilathan