Nodemcu连接并读取MAX30100,将数据在SSD1306 128X64 OLED上显示
时间: 2024-02-29 12:52:00 浏览: 93
要连接NodeMCU、MAX30100和SSD1306 OLED,你需要将MAX30100的VCC引脚连接到NodeMCU的3.3V引脚,将GND引脚连接到NodeMCU的GND引脚,将SCL引脚连接到NodeMCU的D1引脚,将SDA引脚连接到NodeMCU的D2引脚。将SSD1306 OLED的VCC引脚连接到NodeMCU的3.3V引脚,将GND引脚连接到NodeMCU的GND引脚,将SCL引脚连接到NodeMCU的D5引脚,将SDA引脚连接到NodeMCU的D4引脚。
接下来,你需要使用适当的库来读取MAX30100和控制SSD1306 OLED。我建议使用MAX30100_Pulse_and_Oximeter_Sensor_Library库来读取MAX30100,使用Adafruit_SSD1306库来控制SSD1306 OLED,这两个库都可以从Arduino库管理器中安装。在Arduino IDE中打开一个新的程序,然后在“工具”菜单中选择正确的板和端口。接下来,将以下代码复制到你的程序中:
```
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include <Adafruit_SSD1306.h>
#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);
PulseOximeter pox;
void onBeatDetected()
{
Serial.println("Beat!");
}
void setup()
{
Serial.begin(9600);
if (!pox.begin()) {
Serial.println("Failed to initialize pulse oximeter!");
while (1);
}
pox.setOnBeatDetectedCallback(onBeatDetected);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
}
void loop()
{
pox.check(); // 检查新数据
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Heart rate: ");
display.print(pox.getHeartRate());
display.print(" bpm");
display.setCursor(0,10);
display.print("SpO2: ");
display.print(pox.getSpO2());
display.print(" %");
display.display();
delay(100);
}
```
这个程序初始化了一个PulseOximeter对象和一个SSD1306对象,分别用于读取MAX30100和控制SSD1306 OLED。在setup()函数中,它检查是否成功初始化了脉搏血氧仪和SSD1306 OLED,并在OLED上显示“Hello, world!”。在loop()函数中,它检查新数据,然后在OLED上显示心率和血氧饱和度。
上传代码到NodeMCU并打开串口监视器,你应该可以看到实时的心率和血氧饱和度读数,并且这些数据会在SSD1306 OLED上显示。
阅读全文