Здравствуйте,делаю проект “пульсоксиметр” все подключил правильно но датчик max30100 если его ровно ставить на зубчики не горит,но если его переставить на одну на лево начинает загоратся,но на экране led 1602 все равно начальный текст и не переходит на следущию “страницу”.
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#define REPORTING_PERIOD_MS 1000
LiquidCrystal_I2C lcd(0x27, 16, 2);
byte smile[] = {
B00000,
B00000,
B01010,
B00000,
B10001,
B01110,
B00000,
B00000
};
byte mod[] = {
B00000,
B00000,
B01010,
B00000,
B11111,
B00000,
B00000,
B00000
};
byte sad[] = {
B00000,
B00000,
B01010,
B00000,
B01110,
B10001,
B00000,
B00000
};
PulseOximeter pox;
uint32_t tsLastReport = 0;
void onBeatDetected()
{
Serial.println("Beat!!!");
}
void setup()
{
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.createChar(1 , smile);
lcd.createChar(2 , mod);
lcd.createChar(3 , sad);
lcd.setCursor(0, 0);
lcd.print(" Pluse");
lcd.setCursor(0, 1);
lcd.print(" Oximeter");
delay(2000);
if (!pox.begin()) {
Serial.println("FAILED");
for (;;);
} else {
Serial.println("SUCCESS");
}
pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);
pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop()
{
pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
lcd.clear();
lcd.setCursor(0 , 0);
lcd.print("BPM : ");
lcd.print(pox.getHeartRate());
lcd.setCursor(0 , 1);
lcd.print("Sp02: ");
lcd.print(pox.getSpO2());
lcd.print("%");
tsLastReport = millis();
if (pox.getSpO2() >= 96) {
lcd.setCursor(15 , 1);
lcd.write(1);
}
else if (pox.getSpO2() <= 95 && pox.getSpO2() >= 91) {
lcd.setCursor(15 , 1);
lcd.write(2);
}
else if (pox.getSpO2() <= 90) {
lcd.setCursor(15 , 1);
lcd.write(3);
}
}
}


