问题描述
社区的朋友们。我花了大量时间尝试解决此问题,希望您能为我提供帮助。 我正在使用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 (将#修改为@)