Отображение на экране разных страниц

Нет ответов
traduin
Offline
Зарегистрирован: 27.05.2016

Привет всем,

я не силён в программировании, поэтому обращаюсь к вам за помощью.

Задача такая: каждые n секунд менять страницу на экране (OLED 0.96").

Например, на первой странице отображать температуру и влажность внутри помещения, потом через n секунд отображать температуру и влажность снаружи помещения, потом через n секунд отображать время.

Пробовал использовать case, но тогда данные обновляются только тогда, когда происходит переключение страницы.

void loop() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    screen++;
    if (screen > screenMax) screen = 0;
    screenChanged = true;
       
  }
  if (screenChanged) {
    screenChanged = false;
    lcdclear();
    switch(screen)
    {
      case VIEW1:
      drawtemp();
      break;
      case VIEW2:
      drawhum();
      break;
    }
  }
}

Так же пробовал через if с использованием rtc, но тогда многовато if получается.

  DateTime now = rtc.now();
  DateTime prevtime = rtc.now();
  if ((now.second() - t1) >= 0 && (now.second() - t1 < 5) || (now.second() - t1 >= 10) ) {
    lcdclear();
    drawtemp();
  }
  else if ((now.second() - t1) >= 5 && (now.second() - t1 < 10) ) {
    lcdclear();
    drawtime();
  }

Если я думаю в правильную сторону, то можно установить в переменную время, его отнимать текущее время, если оно меньше n, то выполнять то, если больше n, но меньше n2, тогда другое.

Только никак не получается вычислять время.

Используется arduino uno rev3, часы ds3231 и библиотека RTClib, сенсор BME280 и библиотека Adafruit_BME280,  OLED LCD display 128x64 и библиотеки Adafruit_GFX, Adafruit_SSD1306.