вывод данных на дисплей

STELS_365

✩✩✩✩✩✩✩
24 Май 2019
2
0
Проблема такая пытаюсь вывести данные на LCD 16х2 дисплей отрисовываю данные первые данные это должна быть температура и влага в доме потом дисплей чистится и выводятся температура и влага на улице потом снова чистится и выводится атмосферное давление на улице. если первое два работает с задержкой 5 сек то давление не выводит на экран точнее выводи но мгновенно сменяется на данные в доме. можно использовать delay() но не хочу потому что нужно будет прикрутить вебсервер. микроконтроллер node mcu v3(esp8266) ниже листинг

C++:
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
uint8_t temp_cel[8] ={B00111,B00101,B00111,B00000,B00000,B00000,B00000};// цельсии
#define home_INTERVAL 5000UL  // Интервал обновлерия
bool homes=true;
bool wind=false;
bool presssi=false;
void setup() {
  // init display
  lcd.begin(16,2);
  lcd.init();
  lcd.backlight();
  // init display end
}
void print_data_home(){
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp hom:");
  lcd.setCursor(10, 0);
  lcd.print(" 26C");//
  lcd.print((char)223);
  lcd.setCursor(0, 1);     
  lcd.print("humidity hom:");
  lcd.setCursor(13, 1);     
  lcd.print("70%");

  }
void wind_show(){
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Temp:");
  lcd.setCursor(5, 0);
  lcd.print(" 26 C");//temp window
  lcd.print((char)223);
  lcd.setCursor(0, 1);     
  lcd.print("humidity:");// humidity window
  lcd.setCursor(9, 1);     
  lcd.print("70%");
  }

void press_show(){
  lcd.clear();
  lcd.setCursor(0, 0);     
  lcd.print("Pressure:");// humidity window
  lcd.setCursor(9, 0);     
  lcd.print("70 mm.hg");
  }
void loop() {
  // обновление каждые 5 сек
  static unsigned long upd_timer = 0;
  if (millis() - upd_timer > home_INTERVAL) {
 /*
 делал с помощью так называемого флага три переменной и каждая отвечает за свою функцию
 и должна вызываться функция только когда флаг равен истине
 */
if(presssi==true){
  press_show();
   presssi=false;
   wind=false;
   homes=true;
   upd_timer = millis();  //сбросить таймер
   delay(1);
  }
    

if(wind==true){
  wind_show();
  homes=false;
  wind=false;
  presssi=true;
  upd_timer = millis();  //сбросить таймер
  }
 
if(homes==true){
     print_data_home();
     wind=true;
     homes=false;
     presssi=false;
     upd_timer = millis();  //сбросить таймер
}
    
    }

}