Здравствуйте друзья сообщества. Я трачу много времени, пытаясь решить эту проблему, и я надеюсь, что вы можете мне помочь. Я использую библиотеку по этой ссылке https://github.com/oxullo/Arduino-MAX30100 для реализации моего проекта. Код Arduino выполняется довольно хорошо, но когда я пытаюсь получить данные из последовательного порта, который подключен к HC-05, я не могу объединить данные, когда в цикле присутствует pox.update(), полученные данные нравится:
R
o
b
e
r
t
o
A
n
d
r
e
s
Поэтому мне нужно канкатенировать его, чтобы показать его на oled-дисплее 128x64. Более того, условие if (incomingByte == 'T')
похоже не выполняется, так как на oled-дисплее не отображается символ 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="";
Код palabra.concat(incomingByte)
хорошо выполняется без метода pox.update(). Что я делаю неправильно?