|
楼主 |
发表于 2019-9-3 18:25:16
|
显示全部楼层
- /*
- 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
- 实验一百零四: MAX30102血氧仪手腕心率脉搏检测心跳传感器模块
- 1、安装库:IDE-工具-管理库-搜索“MAX30105”-安装
- 2、项目:串口读取测量数据
- 3、连线(I2C):
- VIN → 3.3V
- GND → GND
- SDA 接 A4
- SCL 接 A5
- */
- #include <Wire.h>
- #include "MAX30105.h"
- #include "heartRate.h"
- MAX30105 particleSensor;
- const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.
- byte rates[RATE_SIZE]; //Array of heart rates
- byte rateSpot = 0;
- long lastBeat = 0; //Time at which the last beat occurred
- float beatsPerMinute;
- int beatAvg;
- void setup()
- {
- Serial.begin(115200);
- 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.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
- particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
- }
- void loop()
- {
- long irValue = particleSensor.getIR();
- if (checkForBeat(irValue) == true)
- {
- //We sensed a beat!
- long 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);
- Serial.println();
- delay(1000);
- }
复制代码 |
|