【开源】ESP8266_MAX30102_OLED屏幕实现血氧心率检测_用8266和max30100设计心率血氧测量系统

void setup()
{
  pinMode(oxiInt, INPUT); // pin D0 connects to the interrupt output pin of the MAX30102
  u8g2.begin();
  u8g2.enableUTF8Print();
  u8g2.clearBuffer();
  delay(2000);
  u8g2.setFont(u8g2_font_unifont_tr);
  u8g2.setCursor(0, 14);
  u8g2.print("Initializing...");
  u8g2.sendBuffer();
  Wire.begin();

  Serial.begin(115200);
  Serial.println("Initializing");

  maxim_max30102_reset(); // resets the MAX30102
  maxim_max30102_read_reg(REG_INTR_STATUS_1, &uch_dummy); // Reads/clears the interrupt status register
  maxim_max30102_init();                                  // initialize the MAX30102
  old_n_spo2 = 0.0;

  Serial.println(F("Time[s]\tSpO2\tHR\tRatio\tCorr"));
  timeStart = millis();
}

setup() 函数中,首先将 oxiInt 引脚设置为输入模式(用于连接到 MAX30102 的中断输出引脚),然后对 OLED 屏幕进行初始化操作,在开机画面上输出 “Initializing…”。接着使用 Wire 库初始化 I2C 总线,打开串口输出,并分别进行了 MAX30102 的复位、中断状态清除和初始化操作。最后输出表头 “Time[s]\tSpO2\tHR\tRatio\tCorr”,并记录开始时间。

显示心率和血氧值

void print_hr_spo2(int val_hr, int val_spo2){
  if(val_hr > 999 || val_hr < 0){
    return;
  }
  if(val_spo2 > 100 || val_spo2 < 0){
    return;
  }
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_fub14_tr); 
  u8g2.setCursor(0,14);
  u8g2.print(" HR");
  u8g2.setCursor(60,14);
  u8g2.print("SPO2");
  
  char str_hr[4];  
  u8g2.setFont(u8g2_font_fur20_tr);
  itoa(val_hr, str_hr, 10);
  if(val_hr > 99){
    u8g2.drawStr(0, 38, str_hr);
  }else if(val_hr > 9){
    u8g2.drawStr(14,38, str_hr);
  }else{
    u8g2.drawStr(28,38, str_hr);
  }
  
  char str_spo2[4];
  u8g2.setFont(u8g2_font_fur30_tr); 
  itoa(val_spo2, str_spo2, 10);  
  if(val_spo2 > 99){
    u8g2.drawStr(55, 48, str_spo2);
  }else if(val_spo2 > 9){
    u8g2.drawStr(70, 48, str_spo2);
  }else{
    u8g2.drawStr(85, 48, str_
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值