Очередные исправления

This commit is contained in:
Dmitriy 2025-01-31 00:41:39 +03:00
parent b062f2969f
commit 37bab3fdda

View File

@ -8,6 +8,9 @@
// активный уровень кнопок // активный уровень кнопок
#define KEY_LEVEL 1 #define KEY_LEVEL 1
// максимальное время работы солярия
#define MAX_TIME_SOLARIUM_WORK 20
// ===============================задаем константы ========================================================================= // ===============================задаем константы =========================================================================
const byte moneyPin = 2; // номер пина, к которому подключён купюроприемник, DB2 const byte moneyPin = 2; // номер пина, к которому подключён купюроприемник, DB2
const byte inhibitPin = 4; // +Inhibit (зеленый) на купюроприемник, DB4 const byte inhibitPin = 4; // +Inhibit (зеленый) на купюроприемник, DB4
@ -78,6 +81,7 @@ boolean need_reload_menu = true; // флаг перерисо
boolean need_clear_menu = false; // флаг очистки экрана boolean need_clear_menu = false; // флаг очистки экрана
boolean need_hide_cursor = false; // флаг скытия курсора на экране boolean need_hide_cursor = false; // флаг скытия курсора на экране
boolean start_edit_parameter = false; // флаг старта редактирования параметра boolean start_edit_parameter = false; // флаг старта редактирования параметра
boolean solarium_work = false; // флаг работы соляриев
const PROGMEM char sprintf_format[][SIZE_SCREEN_LINE*2] = { const PROGMEM char sprintf_format[][SIZE_SCREEN_LINE*2] = {
"ver %s %s", "ver %s %s",
@ -89,11 +93,11 @@ const PROGMEM char sprintf_format[][SIZE_SCREEN_LINE*2] = {
" Сброс прошел", " Сброс прошел",
"Неверный пароль", "Неверный пароль",
"%s %d %s ", "%s %d %s ",
"%04ld", "%04ld", //9
"%s%04ld", " %04ld", //10
"не требуется", //11 "не требуется", //11
"требуется", //12 "требуется", //12
" 0000", //13 " 0000 ", //13
"%s %s ", //14 "%s %s ", //14
"%s %ld %s", //15 "%s %ld %s", //15
"%s %s %s", //16 "%s %s %s", //16
@ -121,20 +125,25 @@ const PROGMEM char sprintf_format[][SIZE_SCREEN_LINE*2] = {
#define UV_COLLATEN_REGIME 2 #define UV_COLLATEN_REGIME 2
#define work_regime 5 #define work_regime 5
#define HIGH_RELAY 0
#define LOW_RELAY 1
#define signal_rele 6 #define signal_rele 6
#define weight_impulse 7 #define weight_impulse 7
#define COUNT_BYTE_PARAMETER 8 #define COUNT_BYTE_PARAMETER 8
byte all_byte_parameters[COUNT_BYTE_PARAMETER]; byte all_byte_parameters[COUNT_BYTE_PARAMETER];
const byte all_byte_parameters_default[COUNT_BYTE_PARAMETER] = { const byte all_byte_parameters_default[COUNT_BYTE_PARAMETER] = {
30, 30, // pause_before
3, 3, // pause_after
20, 20, // price
0, 0, // remote_start
0, LUXURA_SOL, // solarium_type
0, COLLATEN_REGIME, // work_regime
0, LOW_RELAY, // signal_rele
10, 10, // weight_impulse
}; };
#define long_starts_counter 0 #define long_starts_counter 0
@ -373,7 +382,7 @@ const menu_screen menu_main[] PROGMEM = {
{ {
{ {
{ {
" ДО СТАРТА", " ДО СТАРТА",
FIXED_LINE, FIXED_LINE,
{0} {0}
}, },
@ -401,7 +410,7 @@ const menu_screen menu_main[] PROGMEM = {
{0} {0}
}, },
{ {
" СЕАНС ЗАГАРА", " СЕАНС ЗАГАРА",
FIXED_LINE, FIXED_LINE,
{0} {0}
}, },
@ -1112,6 +1121,12 @@ void isButtonHoldRepeate(byte x)
*/ */
void isButtonHold(byte x) void isButtonHold(byte x)
{ {
if(solarium_work == true)
{
// если работают солярии вход в меню запрещен
return;
}
need_reload_menu = true; need_reload_menu = true;
if(x == buttonPin_Start) if(x == buttonPin_Start)
@ -1440,14 +1455,14 @@ void show_line(byte index_line)
char line[SIZE_SCREEN_LINE * 2]; char line[SIZE_SCREEN_LINE * 2];
if(start_edit_parameter && index_line == current_line_index) if(start_edit_parameter && index_line == current_line_index)
{ {
char format[8]; char format[11];
memcpy_P( &format, &sprintf_format[10], 8); memcpy_P( &format, &sprintf_format[10], 11);
sprintf(line,format, " ", all_long_parameters[current_menu_screen.menu_lines[index_line].parameter.digit.param_index]); sprintf(line, format, all_long_parameters[current_menu_screen.menu_lines[index_line].parameter.digit.param_index]);
} }
else else
{ {
char format[11]; char format[11];
memcpy_P( &format, &sprintf_format[13], 10); memcpy_P( &format, &sprintf_format[13], 11);
sprintf(line,format); sprintf(line,format);
} }
lcd.print(convertCyr( utf8rus( line ))); lcd.print(convertCyr( utf8rus( line )));
@ -1572,6 +1587,8 @@ bool read_money_impulse ()
*/ */
void start_solarium_work() void start_solarium_work()
{ {
solarium_work = true;
switch(all_byte_parameters[solarium_type]) switch(all_byte_parameters[solarium_type])
{ {
case LUXURA_SOL: case LUXURA_SOL:
@ -1634,6 +1651,8 @@ void stop_solarium_work()
digitalWrite(lamp_start_pin, LOW); digitalWrite(lamp_start_pin, LOW);
break; break;
} }
solarium_work = false;
} }
/* /*
@ -1680,6 +1699,13 @@ void get_money ()
digitalWrite(LEDPin, HIGH); // зажигаем светодиод digitalWrite(LEDPin, HIGH); // зажигаем светодиод
// Достигли максимального времени загара
if(minute >= MAX_TIME_SOLARIUM_WORK)
{
digitalWrite(inhibitPin, HIGH); // выставляем запрет приема монет
digitalWrite(LEDPin, LOW); // гасим светодиод
}
#if KEY_LEVEL == 1 #if KEY_LEVEL == 1
if (digitalRead(buttonPin_Start) == LOW) if (digitalRead(buttonPin_Start) == LOW)
#else #else
@ -1836,16 +1862,9 @@ void second_event()
{ {
stop_solarium_work(); stop_solarium_work();
if(all_byte_parameters[solarium_type] == LUXURA_SOL) memcpy_P( &current_menu_screen, &menu_main[WAIT_AFTER], sizeof(menu_screen));
{ menu_index = WAIT_AFTER;
restart_menu(); minute = all_byte_parameters[pause_after];
}
else
{
memcpy_P( &current_menu_screen, &menu_main[WAIT_AFTER], sizeof(menu_screen));
menu_index = WAIT_AFTER;
minute = all_byte_parameters[pause_after];
}
need_clear_menu = true; need_clear_menu = true;
need_reload_menu = true; need_reload_menu = true;