基于Arduino的MAX30100血氧心率串口输出故障排查需求
问题解决步骤
- 检查传感器佩戴与采样等待
- MAX30100需要手指完全覆盖红外/红光LED及光电传感器,避免环境光直射传感器检测区域,佩戴后等待3~5秒待库完成采样校准,即可输出有效数值。
- 调整传感器LED电流
- 多数国产MAX30100模块适配的电流参数与默认值不符,取消代码中
pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);行的注释,若仍无有效数据可依次尝试MAX30100_LED_CURR_11MA、MAX30100_LED_CURR_14_2MA等预设参数,找到适配当前模块的电流值。
- 多数国产MAX30100模块适配的电流参数与默认值不符,取消代码中
- 验证运行逻辑
可在代码的定时输出逻辑中添加调试打印,确认逻辑正常运行:
若调试信息正常输出但数值为0,问题出在传感器采样环节;若没有调试信息输出,检查串口监视器波特率是否设置为115200,与代码配置一致。if (millis() - tsLastReport > REPORTING_PERIOD_MS) { Serial.println("Debug: timer triggered"); float heartRate = pox.getHeartRate(); float spo2 = pox.getSpO2(); if (heartRate == 0 || spo2 == 0) { Serial.println("Waiting for valid sensor reading"); } else { Serial.print("Heart rate:"); Serial.print(heartRate); Serial.print("bpm / SpO2:"); Serial.print(spo2); Serial.println("%"); } tsLastReport = millis(); } - 更新依赖库版本
在Arduino库管理器中搜索MAX30100_PulseOximeter,将库更新到最新版本,避免旧版本库的采样逻辑bug导致无数据输出。
内容的提问来源于stack exchange,提问作者김혜진
相关产品推荐
相关产品推荐

