当MAX30100库的pox.update在Arduino循环中时无法连接

问题描述

社区的朋友们。我花了大量时间尝试解决此问题,希望您能为我提供帮助。 我正在使用https://github.com/oxullo/Arduino-MAX30100链接中的库来实现我的项目。 arduino代码执行得很好,但是当我尝试从连接到HC-05的串行端口接收数据时,如果pox.update()存在于循环中,则无法连接数据,则接收到的数据是喜欢:

R
o
b
e
r
t
o
 
A
n
d
r
e
s

因此,我需要对其进行分类以在128x64分辨率的显示器中显示它。此外,if (incomingByte == 'T')条件似乎未执行,因为它的显示不显示getStringfromProgMem(3)字符。循环代码为:

  void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    if (incomingByte == 'T') {
      palabra = getStringfromProgMem(3);
      c = 0;
    } else {
      palabra.concat(incomingByte); 
    }
  }
  pox.update();
  display.clearDisplay();
  estado = digitalRead(STATE);
  estado ? (enlace()) : (noenlace());
  unsigned long tiempoActual = millis();
  if (tiempoActual - tiempoAnterior >= intervaloEvento) {
    rate = pox.getHeartRate();
    spo = pox.getSpO2();
    if (rate && palabra != getStringfromProgMem(3)) {
      c++;
    }
    if (c == 60) {
      c = 0;
    }
    /*Serial.print(rate);
    Serial.print(',');
    Serial.print(spo);
    Serial.print(',');
    Serial.println(c);*/
    tiempoAnterior = tiempoActual;
  }
  mostrar(rate,15,35);
  mostrar(spo,105,35);
  mostrar(getStringfromProgMem(0),10,52);
  mostrar(getStringfromProgMem(1),100,52);

  /*outputValue = (VERF * analogRead(ANALOG)) / 1024;
    smoothedVal = smoothedVal + ((outputValue - smoothedVal) / SAMPLES);
    comparacion(smoothedVal);*/
  //
  display.display();
}

该代码仅在oled显示屏中显示第一个字母,而忽略其他字母。我也在使用此库:

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "MAX30100_PulseOximeter.h"
#include <avr/pgmspace.h>

然后将变量“ incomingByte”和“ palabra”声明为全局变量:

char incomingByte;
String palabra="";

没有{pox.update()“方法,代码palabra.concat(incomingByte)执行得很好。我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)