#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");
}