#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <SoftwareSerial.h>
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_ADDR 0x3C
SoftwareSerial hrSerial(18, 19); // RX=18, TX未用
Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);
int bpm = 0;
void setup() {
Serial.begin(9600);
hrSerial.begin(9600); // 波特率需与传感器匹配
// 初始化OLED
if (!oled.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println("OLED初始化失败");
while (1);
}
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(SSD1306_WHITE);
oled.display();
}
void loop() {
// 读取心率传感器数据
if (hrSerial.available()) {
String data = hrSerial.readStringUntil('\n');
parseBPM(data); // 解析BPM值
updateDisplay(); // 刷新OLED
}
}
void parseBPM(String data) {
// 假设数据格式为"BPM:72"
int startIdx = data.indexOf("BPM:");
if (startIdx != -1) {
String valStr = data.substring(startIdx + 4);
bpm = valStr.toInt();
}
}
void updateDisplay() {
oled.clearDisplay();
oled.setCursor(0, 0);
oled.print("心率监测");
oled.setCursor(0, 20);
oled.print("BPM: ");
oled.print(bpm);
oled.display();
}
|
|
|
|
|
|
|