From 7ff4431a9742d92d372fd80c0eb7549813256dc5 Mon Sep 17 00:00:00 2001 From: Dmitriy Date: Mon, 23 Sep 2024 23:46:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D1=81?= =?UTF-8?q?=D0=B5=D0=B0=D0=BD=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- solarium/solarium.ino | 85 ++++++++++++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 21 deletions(-) diff --git a/solarium/solarium.ino b/solarium/solarium.ino index 8006a5a..0544c39 100644 --- a/solarium/solarium.ino +++ b/solarium/solarium.ino @@ -18,7 +18,7 @@ const byte LEDPin = 14; // номер выхода // ноги управления соляриями const byte lamp_start_pin = 5; // Запуск солярия Luxura. Включение ламп солярия FireSun, SunFlower const byte vent_pin = 6; // Включение вентиляторов солярия FireSun, SunFlower -const byte start_solarium = 7; // Удаленный старт от солярия +const byte start_solarium_pin = 7; // Удаленный старт от солярия, DB7 const byte Device_SerNum = 1; // серийный номер устройства const PROGMEM char Device_Ver[] = "0.0"; // версия ПО устройства @@ -251,6 +251,13 @@ struct menu_screen { // текущее меню menu_screen current_menu_screen; +#define WAIT_MONEY 0 +#define WAIT_BEFORE 1 +#define SEANCE_SCREEN 2 +#define WAIT_AFTER 3 +#define SCREEN_END 4 +#define SCREEN_START_SOL 5 + /* Описание основного меню */ @@ -385,6 +392,22 @@ const menu_screen menu_main[] PROGMEM = { }, 2 }, + // Удаленный запуск + { + { + { + "", + FIXED_LINE, + {0} + }, + { + "ОТЛОЖЕННЫЙ СТАРТ", + FIXED_LINE, + {0} + }, + }, + 2 + }, }; /* @@ -534,7 +557,7 @@ const menu_screen menu_settings[] PROGMEM = { } }, { - "Удален.старт", + "Отложен.старт", LIST_PARAM_LINE, { remote_start, @@ -1162,14 +1185,33 @@ void get_money () save_long_parameter(money_counter); } - // задержка до запуска - memcpy_P( ¤t_menu_screen, &menu_main[1], sizeof(menu_screen)); - sprintf(text_parameters[time_delay],"%2d", all_byte_parameters[pause_before]); - lcd.clear(); - show_menu(); - delay(all_byte_parameters[pause_before] * 1000); + if(all_byte_parameters[remote_start]) + { + // удаленный старт кнопкой + memcpy_P( ¤t_menu_screen, &menu_main[SCREEN_START_SOL], sizeof(menu_screen)); + lcd.clear(); + show_menu(); - memcpy_P( ¤t_menu_screen, &menu_main[2], sizeof(menu_screen)); + while(1) + { + if (digitalRead(start_solarium_pin) == LOW) + { + break; + } + delay(1); + } + } + else + { + // задержка до запуска + memcpy_P( ¤t_menu_screen, &menu_main[WAIT_BEFORE], sizeof(menu_screen)); + sprintf(text_parameters[time_delay],"%2d", all_byte_parameters[pause_before]); + lcd.clear(); + show_menu(); + delay(all_byte_parameters[pause_before] * 1000); + } + + memcpy_P( ¤t_menu_screen, &menu_main[SEANCE_SCREEN], sizeof(menu_screen)); menu_index = 2; sprintf(text_parameters[time_seance]," %02d:%02d", minute, second); need_clear_menu = true; @@ -1238,7 +1280,7 @@ void one_half_second() void restart_menu() { - memcpy_P( ¤t_menu_screen, &menu_main[0], sizeof(menu_screen)); + memcpy_P( ¤t_menu_screen, &menu_main[WAIT_MONEY], sizeof(menu_screen)); sprintf(text_parameters[time_seance],""); menu_index = 0; @@ -1263,35 +1305,35 @@ void second_event() sprintf(text_parameters[time_seance]," %02d:%02d", minute, second); need_reload_menu = true; - if(menu_index == 4 && time_remain == 0) + if(menu_index == SCREEN_END && time_remain == 0) { restart_menu(); } - if(menu_index == 3 && time_remain == 0) + if(menu_index == WAIT_AFTER && time_remain == 0) { stop_vent_work(); - memcpy_P( ¤t_menu_screen, &menu_main[4], sizeof(menu_screen)); - menu_index = 4; + memcpy_P( ¤t_menu_screen, &menu_main[SCREEN_END], sizeof(menu_screen)); + menu_index = SCREEN_END; second = 10; need_clear_menu = true; need_reload_menu = true; } - if(menu_index == 2 && time_remain == 0) + if(menu_index == SEANCE_SCREEN && time_remain == 0) { stop_solarium_work(); if(all_byte_parameters[solarium_type] == LUXURA_SOL) { - memcpy_P( ¤t_menu_screen, &menu_main[4], sizeof(menu_screen)); - menu_index = 4; + memcpy_P( ¤t_menu_screen, &menu_main[SCREEN_END], sizeof(menu_screen)); + menu_index = SCREEN_END; second = 10; } else { - memcpy_P( ¤t_menu_screen, &menu_main[3], sizeof(menu_screen)); - menu_index = 3; + memcpy_P( ¤t_menu_screen, &menu_main[WAIT_AFTER], sizeof(menu_screen)); + menu_index = WAIT_AFTER; minute = all_byte_parameters[pause_after]; } @@ -1329,6 +1371,7 @@ void setup() pinMode(buttonPin_Start, INPUT_PULLUP); // инициализируем пин, подключенный к кнопке, как вход pinMode(lamp_start_pin, OUTPUT); // управление лампами pinMode(vent_pin, OUTPUT); // управление вентиляторами + pinMode(start_solarium_pin, INPUT_PULLUP); // удаленный старт солярия digitalWrite(LEDPin,LOW); // изначально светодиод погашен digitalWrite(inhibitPin, LOW); // изначально разрешаем прием купюр @@ -1336,7 +1379,7 @@ void setup() digitalWrite(vent_pin, LOW); // изначально выключен load_parameter(); - memcpy_P( ¤t_menu_screen, &menu_main[0], sizeof(menu_screen)); + memcpy_P( ¤t_menu_screen, &menu_main[WAIT_MONEY], sizeof(menu_screen)); sprintf(text_parameters[time_seance],""); menu_index = 0; @@ -1353,7 +1396,7 @@ void loop() { menu(); need_reload_menu = true; - memcpy_P( ¤t_menu_screen, &menu_main[0], sizeof(menu_screen)); + memcpy_P( ¤t_menu_screen, &menu_main[WAIT_MONEY], sizeof(menu_screen)); } else {