MAX 30102 16x2 LCD 心率监测器
组件和用品
 | | × | 1 | |
| | × | 1 | |
 | Adafruit RGB 背光 LCD - 16x2 | | × | 1 | |
 | | × | 1 | |
关于这个项目
这是一个简单的心率监测器,由 MAX30102 传感器模块制成。我基于 Arduino 库编写了一个简单的代码,值显示在 16x2 的 LCD 屏幕上。第一行显示平均每分钟心跳次数,第二行显示反射红外光束的值。该值应保持不变,以使读数更准确。
代码
无标题文件Arduino
/* 使用 MAX30105 Breakout 的光学心率检测(PBA 算法) 作者:Bennu @ MH-ET LIVE 日期:2017 年 10 月 2 日 https://github.com/MHEtLive/MH-ET-LIVE-max30102 这是使用 Penpheral Beat Amplitude (PBA) 算法显示心率或每分钟心跳次数 (BPM) 的演示。最好使用橡皮筋或其他紧固装置将传感器连接到您的手指上。人类通常不擅长对事物施加持续的压力。当您将手指压在传感器上时,它的变化足以导致手指中的血液流动不同,从而导致传感器读数不稳定。硬件连接(分线板到 Arduino):-5V =5V(允许 3.3V) -GND =GND -SDA =A4(或 SDA) -SCL =A5(或 SCL) -INT =未连接 MAX30105 Breakout 可以处理 5V 或3.3V I2C 逻辑。我们建议使用 5V 为电路板供电,但它也会以 3.3V 的电压运行。*/#include #include "MAX30105.h"#include #include "heartRate.h"MAX30105particleSensor;LiquidCrystal lcd(12, 11, 5, 4, 3, 2);常量字节RATE_SIZE =4; //增加这个以获得更多的平均。 4 是好的。字节率[RATE_SIZE]; //心率数组byte rateSpot =0;long lastBeat =0; //最后一个节拍发生的时间float beatsPerMinute;int beatAvg;void setup(){ Serial.begin(9600);液晶显示器。开始(16, 2); Serial.println("正在初始化..."); // 初始化传感器 if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //使用默认 I2C 端口,400kHz 速度 { Serial.println("MAX30105 未找到。请检查接线/电源。");而 (1); } Serial.println("将食指放在传感器上,压力稳定。");粒子传感器.setup(); //使用默认设置配置传感器particleSensor.setPulseAmplitudeRed(0x0A); //将红色 LED 转为低电平表示传感器正在运行particleSensor.setPulseAmplitudeGreen(0); //关闭绿色LED}void loop(){ long irValue =particleSensor.getIR(); if (checkForBeat(irValue) ==true) { //我们感觉到了节拍! long delta =millis() - lastBeat; lastBeat =毫秒(); beatsPerMinute =60 / (delta / 1000.0); if (beatsPerMinute <255 &&beatsPerMinute> 20) {rates[rateSpot++] =(byte)beatsPerMinute; //将此读数存储在数组 rateSpot %=RATE_SIZE; //包装变量 //取读数的平均值 beatAvg =0; for (byte x =0; x
示意图