Все работает все кроме солярия коллатен

This commit is contained in:
Dmitriy 2024-09-17 02:02:50 +03:00
parent 362aeb6ae5
commit d105199434

View File

@ -70,17 +70,27 @@ 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; // флаг старта редактирования параметра
bool enable_reset = false; // разрешение сброса настроек
// Переменные для работы с соляриями // Переменные для работы с соляриями
#define pause_before 0 #define pause_before 0
#define pause_after 1 #define pause_after 1
#define price 2 #define price 2
#define remote_start 3 #define remote_start 3
#define LUXURA_SOL 0
#define FIRESUN_UV_SOL 1
#define FIRESUN_UV_K_SOL 2
#define SUNFLOWER_SOL 3
#define solarium_type 4 #define solarium_type 4
#define work_regime 5 #define work_regime 5
#define signal_rele 6 #define signal_rele 6
#define weight_impulse 7 #define weight_impulse 7
#define reset_device 8 #define reset_device 8
#define COUNT_BYTE_PARAMETER 9 #define reset_counters 9
#define password 10
#define COUNT_BYTE_PARAMETER 11
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] = {
@ -92,7 +102,9 @@ const byte all_byte_parameters_default[COUNT_BYTE_PARAMETER] = {
0, 0,
0, 0,
10, 10,
0 0,
0,
0,
}; };
#define long_starts_counter 0 #define long_starts_counter 0
@ -112,7 +124,7 @@ char text_parameters[COUNT_TEXT_PARAMETER][20];
// ============================== Описываем свой символ "Рубль" ======================================================================== // ============================== Описываем свой символ "Рубль" ========================================================================
// Просто "рисуем" символ единицами. Единицы при выводе на экран окажутся закрашенными точками, нули - не закрашенными // Просто "рисуем" символ единицами. Единицы при выводе на экран окажутся закрашенными точками, нули - не закрашенными
const PROGMEM byte rubl[8] = { const byte rubl[8] = {
0b00000, 0b00000,
0b01110, 0b01110,
0b01001, 0b01001,
@ -270,7 +282,7 @@ const menu_screen menu_main[] PROGMEM = {
0, 0,
0, 0,
}, },
"rub" 0
} }
}, },
{ {
@ -282,7 +294,7 @@ const menu_screen menu_main[] PROGMEM = {
0, 0,
0, 0,
}, },
"" " "
} }
}, },
}, },
@ -339,6 +351,34 @@ const menu_screen menu_main[] PROGMEM = {
}, },
3 3
}, },
// Меню паузы после сеанса
{
{
{
"",
FIXED_LINE,
{0}
},
{
" PAUSE",
FIXED_LINE,
{0}
},
{
"",
TEXT_PARAM_LINE,
{
time_seance,
{
0,
0,
},
" "
}
},
},
3
},
// Меню окончания сеанса // Меню окончания сеанса
{ {
{ {
@ -485,7 +525,7 @@ const menu_screen menu_settings[] PROGMEM = {
0, 0,
100, 100,
}, },
"rub" 0
} }
}, },
{ {
@ -570,7 +610,7 @@ const menu_screen menu_settings[] PROGMEM = {
0, 0,
100, 100,
}, },
"" " "
} }
}, },
}, },
@ -585,15 +625,15 @@ const menu_screen menu_settings[] PROGMEM = {
{0} {0}
}, },
{ {
"", "Pasword",
DIGIT_PARAM_LINE, DIGIT_PARAM_LINE,
{ {
weight_impulse, password,
{ {
0, 0,
100, 255,
}, },
"" " "
} }
}, },
}, },
@ -616,7 +656,7 @@ const menu_screen menu_settings[] PROGMEM = {
0, 0,
0, 0,
}, },
"" " "
} }
}, },
{ {
@ -628,7 +668,7 @@ const menu_screen menu_settings[] PROGMEM = {
0, 0,
0, 0,
}, },
"rub" 0
} }
}, },
{ {
@ -663,7 +703,7 @@ const menu_screen menu_settings[] PROGMEM = {
0, 0,
0, 0,
}, },
"" " "
} }
}, },
{ {
@ -675,7 +715,7 @@ const menu_screen menu_settings[] PROGMEM = {
0, 0,
0, 0,
}, },
"rub" 0
} }
}, },
{ {
@ -758,10 +798,31 @@ void reset_parameter()
all_long_parameters[short_time_counter] = 0; all_long_parameters[short_time_counter] = 0;
save_long_parameter(short_time_counter); save_long_parameter(short_time_counter);
all_long_parameters[long_starts_counter] = 0;
save_long_parameter(long_starts_counter);
all_long_parameters[long_money_counter] = 0;
save_long_parameter(long_money_counter);
all_long_parameters[long_time_counter] = 0;
save_long_parameter(long_time_counter);
all_long_parameters[money_counter] = 0; all_long_parameters[money_counter] = 0;
save_long_parameter(money_counter); save_long_parameter(money_counter);
} }
void reset_short_counters()
{
all_long_parameters[short_starts_counter] = 0;
save_long_parameter(short_starts_counter);
all_long_parameters[short_money_counter] = 0;
save_long_parameter(short_money_counter);
all_long_parameters[short_time_counter] = 0;
save_long_parameter(short_time_counter);
}
/* /*
удержание кнопки удержание кнопки
*/ */
@ -927,8 +988,11 @@ void show_line(byte index_line)
char line[21]; char line[21];
sprintf(line,"%s %ld %s", current_menu_screen.menu_lines[index_line].string, sprintf(line,"%s %ld %s", current_menu_screen.menu_lines[index_line].string,
all_long_parameters[current_menu_screen.menu_lines[index_line].parameter.digit.param_index], all_long_parameters[current_menu_screen.menu_lines[index_line].parameter.digit.param_index],
current_menu_screen.menu_lines[index_line].parameter.digit.unit); current_menu_screen.menu_lines[index_line].parameter.digit.unit[0] >= 0x20 ?
current_menu_screen.menu_lines[index_line].parameter.digit.unit :
"");
lcd.print(line); lcd.print(line);
current_menu_screen.menu_lines[index_line].parameter.digit.unit[0] < 0x20 ? lcd.write(0) : 0;
} }
else if(current_menu_screen.menu_lines[index_line].type == TEXT_PARAM_LINE) else if(current_menu_screen.menu_lines[index_line].type == TEXT_PARAM_LINE)
{ {
@ -1007,6 +1071,49 @@ bool read_money_impulse ()
return impulse; return impulse;
} }
void start_solarium_work()
{
if(all_byte_parameters[signal_rele]) digitalWrite(lamp_start_pin, HIGH);
else digitalWrite(lamp_start_pin, LOW);
switch(all_byte_parameters[solarium_type])
{
case LUXURA_SOL:
break;
case FIRESUN_UV_SOL:
digitalWrite(vent_pin, HIGH);
break;
case FIRESUN_UV_K_SOL:
break;
case SUNFLOWER_SOL:
digitalWrite(vent_pin, HIGH);
break;
}
}
void stop_solarium_work()
{
if(all_byte_parameters[signal_rele]) digitalWrite(lamp_start_pin, LOW);
else digitalWrite(lamp_start_pin, HIGH);
}
void stop_vent_work()
{
switch(all_byte_parameters[solarium_type])
{
case LUXURA_SOL:
break;
case FIRESUN_UV_SOL:
digitalWrite(vent_pin, LOW);
break;
case FIRESUN_UV_K_SOL:
break;
case SUNFLOWER_SOL:
digitalWrite(vent_pin, LOW);
break;
}
}
/* /*
Прием денег Прием денег
*/ */
@ -1063,8 +1170,10 @@ void get_money ()
need_clear_menu = true; need_clear_menu = true;
need_reload_menu = true; need_reload_menu = true;
bill_enable =! bill_enable; // устанавливаем флаг: не принимаем деньги bill_enable = !bill_enable; // устанавливаем флаг: не принимаем деньги
// Запускаем работу солярия // Запускаем работу солярия
start_solarium_work();
} }
} }
} }
@ -1094,9 +1203,20 @@ void menu()
} }
if(all_byte_parameters[reset_device]) if(all_byte_parameters[reset_device])
{ {
reset_parameter(); if(enable_reset) reset_parameter();
all_byte_parameters[reset_device] = 0; all_byte_parameters[reset_device] = 0;
} }
if(all_byte_parameters[reset_counters])
{
if(enable_reset) reset_short_counters();
all_byte_parameters[reset_counters] = 0;
}
if(all_byte_parameters[password] == 22)
{
enable_reset = true;
all_byte_parameters[password] = 0;
save_byte_parameter(password);
}
} }
lcd.clear(); lcd.clear();
@ -1111,6 +1231,18 @@ void one_half_second()
} }
void restart_menu()
{
memcpy_P( &current_menu_screen, &menu_main[0], sizeof(menu_screen));
sprintf(text_parameters[time_seance],"");
menu_index = 0;
need_clear_menu = true;
need_reload_menu = true;
bill_enable = !bill_enable;
}
/* /*
Событие секунды Событие секунды
*/ */
@ -1124,26 +1256,40 @@ void second_event()
sprintf(text_parameters[time_seance]," %02d:%02d", minute, second); sprintf(text_parameters[time_seance]," %02d:%02d", minute, second);
need_reload_menu = true; need_reload_menu = true;
if(menu_index == 4 && time_remain == 0)
{
restart_menu();
}
if(menu_index == 3 && time_remain == 0) if(menu_index == 3 && time_remain == 0)
{ {
memcpy_P( &current_menu_screen, &menu_main[0], sizeof(menu_screen)); stop_vent_work();
sprintf(text_parameters[time_seance],"");
menu_index = 0; memcpy_P( &current_menu_screen, &menu_main[4], sizeof(menu_screen));
menu_index = 4;
second = 10;
need_clear_menu = true; need_clear_menu = true;
need_reload_menu = true; need_reload_menu = true;
bill_enable =! bill_enable;
} }
if(menu_index == 2 && time_remain == 0) if(menu_index == 2 && time_remain == 0)
{
stop_solarium_work();
if(all_byte_parameters[solarium_type] == LUXURA_SOL)
{
memcpy_P( &current_menu_screen, &menu_main[4], sizeof(menu_screen));
menu_index = 4;
second = 10;
}
else
{ {
memcpy_P( &current_menu_screen, &menu_main[3], sizeof(menu_screen)); memcpy_P( &current_menu_screen, &menu_main[3], sizeof(menu_screen));
menu_index = 3; menu_index = 3;
minute = all_byte_parameters[pause_after] * 60;
}
need_clear_menu = true; need_clear_menu = true;
need_reload_menu = true; need_reload_menu = true;
second = 10;
} }
} }
@ -1175,14 +1321,20 @@ void setup()
pinMode(LEDPin, OUTPUT); // инициализируем пин, подключенный к светодиоду, как выход pinMode(LEDPin, OUTPUT); // инициализируем пин, подключенный к светодиоду, как выход
pinMode(buttonPin_Service, INPUT_PULLUP); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin_Service, INPUT_PULLUP); // инициализируем пин, подключенный к кнопке, как вход
pinMode(buttonPin_Start, INPUT_PULLUP); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin_Start, INPUT_PULLUP); // инициализируем пин, подключенный к кнопке, как вход
pinMode(lamp_start_pin, OUTPUT); // управление лампами
pinMode(vent_pin, OUTPUT); // управление вентиляторами
digitalWrite(LEDPin,LOW); // изначально светодиод погашен digitalWrite(LEDPin,LOW); // изначально светодиод погашен
digitalWrite(inhibitPin, LOW); // изначально разрешаем прием купюр digitalWrite(inhibitPin, LOW); // изначально разрешаем прием купюр
digitalWrite(lamp_start_pin, LOW); // изначально выключен
digitalWrite(vent_pin, LOW); // изначально выключен
load_parameter(); load_parameter();
memcpy_P( &current_menu_screen, &menu_main[0], sizeof(menu_screen)); memcpy_P( &current_menu_screen, &menu_main[0], sizeof(menu_screen));
sprintf(text_parameters[time_seance],""); sprintf(text_parameters[time_seance],"");
menu_index = 0; menu_index = 0;
all_long_parameters[money_counter] = 0;
} }
void loop() void loop()