mam podłączone dwa czujniki BME i SHT. Wyświetlam te dane na OLED. Chciałbym żeby dane z danego czujnika wyświetlały się na jednym ekranie. Mógłbym prosić o podpowiedź jak odwołać się do danego czujnika (kanału)? Programistą nie jestem, jedynie tak sobie potrafię coś przerobić kod. Kombinuję i kombinuję ale nic mi nie wychodzi.
Code: Select all
//BME
void displayBME(OLEDDisplay* display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
for (auto element = Supla::Element::begin(); element != nullptr; element = element->next()) {
if (element->getChannel()) {
auto channel = element->getChannel();
if (channel->getChannelNumber() == oled[state->currentFrame].chanelSensor) {
double lastTemperature = channel->getValueDoubleFirst();
double lastHumidit = channel->getValueDoubleSecond();
displayUiTemperature(display, state, x, y, lastTemperature);
displaUiHumidity(display, state, x, y, lastHumidit);
}
}
if (element->getSecondaryChannel()) {
auto channel = element->getSecondaryChannel();
double lastPressure = channel->getValueDouble();
displayUiPressure(display, state, x, y, lastPressure);
}
}
}
//SHT
void displaySHT(OLEDDisplay* display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
for (auto element = Supla::Element::begin(); element != nullptr; element = element->next()) {
if (element->getChannel()) {
auto channel = element->getChannel();
if (channel->getChannelNumber() == oled[state->currentFrame].chanelSensor) {
double lastTemperature = channel->getValueDoubleFirst();
double lastHumidit = channel->getValueDoubleSecond();
displayUiTemperature(display, state, x, y, lastTemperature);
displaUiHumidity(display, state, x, y, lastHumidit);
}
}
}
}
.
.
.
frames = new FrameCallback[maxFrame];
oled = new oledStruct[maxFrame];
for (auto element = Supla::Element::begin(); element != nullptr; element = element->next()) {
if (element->getChannel()) {
auto channel = element->getChannel();
if (channel->getChannelType() == SUPLA_CHANNELTYPE_HUMIDITYANDTEMPSENSOR) {
frames[frameCount] = {displayBME};
oled[frameCount].chanelSensor = channel->getChannelNumber();
frameCount += 1;
}
if (channel->getChannelType() == SUPLA_CHANNELTYPE_HUMIDITYANDTEMPSENSOR) {
frames[frameCount] = {displaySHT};
oled[frameCount].chanelSensor = channel->getChannelNumber();
frameCount += 1;
}
if (channel->getChannelType() == SUPLA_CHANNELTYPE_HUMIDITYSENSOR) {
frames[frameCount] = {displayGeneral};
oled[frameCount].chanelSensor = channel->getChannelNumber();
oled[frameCount].forSecondaryValue = true;
frameCount += 1;
}
}
}