#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
OneWire ds_1(6), ds_2(7), ds_3(8);
DallasTemperature ds1(&ds_1), ds2(&ds_2), ds3(&ds_3);
DeviceAddress addr1, addr2, addr3;

const int Up = 2;
const int Down = 3;
const int Left = 4;
const int Right = 5;

int TUS = 20;
bool backlightEnabled = false;

const int menuItems = 4;
const int submenuItems = 3;
int currentMenuItem = 0;
int currentSubmenuItem = 0;

unsigned long lastInteractionTime = 0;
const unsigned long menuTimeout = 5000;
const unsigned long backlightTimeout = 5000;

void setup() {
  ds1.begin();//запуск датчика температуры
  ds2.begin();//запуск датчика температуры
  ds3.begin();//запуск датчика температуры
  lcd.init();
  lcd.backlight();
  lcd.print("Menu Example");

  pinMode(Up, INPUT_PULLUP);
  pinMode(Down, INPUT_PULLUP);
  pinMode(Left, INPUT_PULLUP);
  pinMode(Right, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(Up) == LOW) {
    TUS++;
  }
  else if (digitalRead(Down) == LOW) {
    TUS--;
  }
  else if (digitalRead(Left) == LOW) {
    backlightEnabled = !backlightEnabled;

    if (backlightEnabled) {
      lcd.backlight();
    }
    else {
      lcd.noBacklight();
    }
  }
  else if (digitalRead(Right) == LOW) {
    menu();
  }

  if (millis() - lastInteractionTime >= menuTimeout) {
    exitMenu();
  }

  updateDisplay();
}

void updateDisplay() {
  lcd.setCursor(0, 1);
  lcd.print("T: ");
  lcd.print(TUS);

  if (backlightEnabled) {
    lcd.setCursor(8, 1);
    lcd.print("*");
  }
  else {
    lcd.setCursor(8, 1);
    lcd.print(" ");
  }
}

void menu() {
  lcd.clear();
  lcd.print("1) Auto   ");
  lcd.setCursor(0, 1);
  lcd.print("2) On     ");
}

void exitMenu() {
  lcd.clear();
  lcd.print("Menu Example");
}
$abcdeabcde151015202530354045505560fghijfghij