Arduino#
1. Arduino简介#
Arduino是一种开源电子原型平台,旨在帮助爱好者和初学者轻松构建各种电子项目。Arduino结合了简单易用的硬件和软件,使得用户能够通过编写代码来控制和互动。基于微控制器的Arduino开发板允许用户连接各种传感器、执行器和显示设备,适用于智能家居、机器人、传感器网络等多个领域。
Arduino使用简洁明了的编程语言(基于C/C++),不仅适合新手学习编程,也被经验丰富的开发者广泛应用。其强大的社区支持和丰富的文档使得用户能够快速上手,并解决项目中遇到的问题。很多学校和教育机构也将Arduino作为教学的一部分,培养学生的动手能力和创造性思维。
2. 接线图#

3. 测试代码#
下载资料:Arduino
打开Arduino IDE,选择“项目”,选择“导入库”,再选择“添加.ZIP库”。

找到下载资料的存放位置,打开文件夹找到库文件,选择要导入的库,点击“打开”。

安装成功出现的界面。

#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);
if (irValue < 50000) {
Serial.print(" No finger?");
}
Serial.println();
}
4. 代码说明#
特别注意:上传代码之前,必须将对应的库文件放置到安装Arduino IDE的库文件夹中。
5. 测试结果#
按照接线图接线,上传测试代码成功,利用USB线上电后,打开串口监视器,设置波特率为115200,串口监视器显示如下图。

IR值为判断有无手指靠近的值(当手指没有靠近传感器时,IR值较小且显示“No finger?”。贴近传感器后IR值剧增,且待测试数据进入测试范围值后开始示数)。
BPM值为心率,Avg BPM值为血氧饱和度(Avg BPM)。血氧饱和度是75-100,心率(BPM)60-150。
特别注意:
测试前应先感应手指脉动,手指脉搏要完全贴合传感器15秒左右,才会显示稳定数据。若串口监视器无数据显示时,请挪动手指脉搏处以利于传感器感应,或按UNO上的复位键,直到获得较平稳的数据。
