This is the example sketch for the spark fun I've been trying to get to work
/*
This example sketch gives you exactly what the SparkFun Pulse Oximiter and
Heart Rate Monitor is designed to do: read heart rate and blood oxygen levels.
This board requires I-squared-C connections but also connections to the reset
and mfio pins. When using the device keep LIGHT and CONSISTENT pressure on the
sensor. Otherwise you may crush the capillaries in your finger which results
in bad or no results. A summary of the hardware connections are as follows:
SDA -> SDA
SCL -> SCL
RESET -> PIN 4
MFIO -> PIN 5
Author: Elias Santistevan
Date: 8/2019
SparkFun Electronics
If you run into an error code check the following table to help diagnose your
problem:
1 = Unavailable Command
2 = Unavailable Function
3 = Data Format Error
4 = Input Value Error
5 = Try Again
255 = Error Unknown
*/
#include <SparkFun_Bio_Sensor_Hub_Library.h>
#include <Wire.h>
// Reset pin, MFIO pin
int resPin = 4;
int mfioPin = 13;
// Takes address, reset pin, and MFIO pin.
SparkFun_Bio_Sensor_Hub bioHub(resPin, mfioPin);
bioData body;
// ^^^^^^^^^
// What's this!? This is a type (like int, byte, long) unique to the SparkFun
// Pulse Oximeter and Heart Rate Monitor. Unlike those other types it holds
// specific information on your heartrate and blood oxygen levels. BioData is
// actually a specific kind of type, known as a "struct".
// You can choose another variable name other than "body", like "blood", or
// "readings", but I chose "body". Using this "body" varible in the
// following way gives us access to the following data:
// body.heartrate - Heartrate
// body.confidence - Confidence in the heartrate value
// body.oxygen - Blood oxygen level
// body.status - Has a finger been sensed?
void setup(){
Serial.begin(115200);
Wire.begin();
int result = bioHub.begin();
if (result == 0) // Zero errors!
Serial.println("Sensor started!");
else
Serial.println("Could not communicate with the sensor!");
Serial.println("Configuring Sensor....");
int error = bioHub.configBpm(MODE_ONE); // Configuring just the BPM settings.
if(error == 0){ // Zero errors!
Serial.println("Sensor configured.");
}
else {
Serial.println("Error configuring sensor.");
Serial.print("Error: ");
Serial.println(error);
}
// Data lags a bit behind the sensor, if you're finger is on the sensor when
// it's being configured this delay will give some time for the data to catch
// up.
Serial.println("Loading up the buffer with data....");
delay(4000);
}
void loop(){
// Information from the readBpm function will be saved to our "body"
// variable.
body = bioHub.readBpm();
Serial.print("Heartrate: ");
Serial.println(body.heartRate);
Serial.print("Confidence: ");
Serial.println(body.confidence);
Serial.print("Oxygen: ");
Serial.println(body.oxygen);
Serial.print("Status: ");
Serial.println(body.status);
// Slow it down or your heart rate will go up trying to keep up
// with the flow of numbers
delay(250);
}
and this is the complete error message im getting
In file included from /Users/alexreimert/Documents/Arduino/libraries/SparkFun_Bio_Sensor_Hub_Library/src/SparkFun_Bio_Sensor_Hub_Library.h:4:0,
from /Users/alexreimert/Documents/Arduino/libraries/SparkFun_Bio_Sensor_Hub_Library/src/SparkFun_Bio_Sensor_Hub_Library.cpp:21:
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'bool SparkFun_Bio_Sensor_Hub::eraseFlash()':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'version SparkFun_Bio_Sensor_Hub::readBootloaderVers()':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'version SparkFun_Bio_Sensor_Hub::readSensorHubVersion()':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'version SparkFun_Bio_Sensor_Hub::readAlgorithmVersion()':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::enableWrite(uint8_t, uint8_t, uint8_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::writeByte(uint8_t, uint8_t, uint8_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::writeByte(uint8_t, uint8_t, uint8_t, uint16_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::writeByte(uint8_t, uint8_t, uint8_t, uint8_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::writeLongBytes(uint8_t, uint8_t, uint8_t, int32_t*, size_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::writeBytes(uint8_t, uint8_t, uint8_t, uint8_t*, size_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::readByte(uint8_t, uint8_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::readByte(uint8_t, uint8_t, uint8_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::readFillArray(uint8_t, uint8_t, uint8_t, uint8_t*)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint16_t SparkFun_Bio_Sensor_Hub::readIntByte(uint8_t, uint8_t, uint8_t)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::readMultipleBytes(uint8_t, uint8_t, uint8_t, size_t, int32_t*)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h: In member function 'uint8_t SparkFun_Bio_Sensor_Hub::readMultipleBytes(uint8_t, uint8_t, uint8_t, size_t, uint8_t*)':
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:63:12: note: candidate 1: size_t TwoWire::requestFrom(int, int)
size_t requestFrom(int, int);
^~~~~~~~~~~
/Users/alexreimert/Library/Arduino15/packages/arduino/hardware/megaavr/1.8.8/libraries/Wire/src/Wire.h:61:12: note: candidate 2: virtual size_t TwoWire::requestFrom(uint8_t, size_t)
size_t requestFrom(uint8_t, size_t);
^~~~~~~~~~~
Sketch uses 7885 bytes (16%) of program storage space. Maximum is 49152 bytes.
Global variables use 596 bytes (9%) of dynamic memory, leaving 5548 bytes for local variables. Maximum is 6144 bytes.
avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description