Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include "MAX30105.h"
- #include "heartRate.h"
- MAX30105 particleSensor;
- const byte RATE_SIZE = 4;
- byte rates[RATE_SIZE];
- byte rateSpot = 0;
- long lastBeat = 0;
- float beatsPerMinute;
- int beatAvg;
- float temperature;
- unsigned long dataMillis = 0;
- long irValue;
- long delta;
- void setup() {
- Serial.begin(115200);
- delay(10000);
- Serial.println("11111");
- init_heart_rate_sensor();
- }
- void loop() {
- read_heart_rate_sensor();
- }
- void init_heart_rate_sensor() {
- Serial.println("Initializing...");
- // Initialize sensor
- if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
- {
- Serial.println("MAX30105 was not found. Please check wiring/power. ");
- while (1);
- }
- Serial.println("Place your index finger on the sensor with steady pressure.");
- particleSensor.setup(); //Configure sensor with default settings
- particleSensor.enableDIETEMPRDY(); //Enable the temp ready interrupt. This is required.
- particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
- particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
- }
- void read_heart_rate_sensor() {
- irValue = particleSensor.getIR();
- if (checkForBeat(irValue) == true)
- {
- //We sensed a beat!
- delta = millis() - lastBeat;
- lastBeat = millis();
- beatsPerMinute = 60 / (delta / 1000.0);
- if (beatsPerMinute < 255 && beatsPerMinute > 20) {
- rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
- rateSpot %= RATE_SIZE; //Wrap variable
- //Take average of readings
- beatAvg = 0;
- for (byte x = 0 ; x < RATE_SIZE ; x++)
- beatAvg += rates[x];
- beatAvg /= RATE_SIZE;
- }
- }
- Serial.print("IR=");
- Serial.print(irValue);
- Serial.print(", BPM=");
- Serial.print(beatsPerMinute);
- Serial.print(", Avg BPM=");
- Serial.print(beatAvg);
- temperature = particleSensor.readTemperature();
- Serial.print(", temperatureC=");
- Serial.print(temperature, 4);
- if (irValue < 50000)
- Serial.print(" No finger?");
- Serial.println();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement