赞
踩
因为MAX30102和 OLED显示屏都是通过I2C跟ESP开发板链接,所以需要自定义一对接口(SLC、SDA)。LED用默认的 PIN21,PIN22,MAX30102用PIN5,PIN23
所以初始化的时候
LED用
SSD1306Wire display(0x3c,SDA, SCL);//21,22 即默认Wire
MAX30102用Wire1
``
Wire1.begin(5, 23); //自定义sda scl端口
if (!particleSensor.begin(Wire1, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
{
...
}
心率计算可以使用以下,原理是检测ir数据是否为有效心跳数据,如果是则检测跟上一次有效心跳数据获取到的时间间隔(毫秒),用60/(delta/1000)计算60秒内有多少次有效心跳,这个数值不稳定,所以要用一个平均值
if (checkForBeat(ir) == true) { Serial.print("IR="); Serial.print(ir); //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; } }
血氧计算方式参见 文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。