|
@ -1,25 +1,21 @@ |
|
|
#include "ozone_work.h" |
|
|
#include "ozone_work.h" |
|
|
#define TIMINT_TIME 1800000 |
|
|
|
|
|
uint8_t timing_rank=0;//1定时30min,2定时60min,3定时90min,4定时120min |
|
|
|
|
|
|
|
|
// #define TIMINT_TIME 1800000 |
|
|
|
|
|
// #define INTERVAL_TIME 300000 |
|
|
|
|
|
#define TIMINT_TIME 10000 |
|
|
|
|
|
#define INTERVAL_TIME 1000 |
|
|
|
|
|
|
|
|
extern uint32_t g_frequency; |
|
|
extern uint32_t g_frequency; |
|
|
extern uint32_t g_sys_sick; |
|
|
extern uint32_t g_sys_sick; |
|
|
extern uint32_t g_duty[4]; |
|
|
|
|
|
|
|
|
extern uint32_t g_duty[4]; // PWMd的占空比 |
|
|
extern adc_t adc; |
|
|
extern adc_t adc; |
|
|
uint32_t g_ozone_work_time = 0; |
|
|
|
|
|
uint32_t g_ozone_interval_time = 0; |
|
|
|
|
|
uint32_t g_count_down_begin_sys_time = 0; |
|
|
|
|
|
uint32_t g_count_interval_down_begin_sys_time = 0; |
|
|
|
|
|
int ozone_work_state = 0; // 0没有工作,1一直工作,2定时工作 |
|
|
|
|
|
bool g_ozone_interva_stat = false; |
|
|
|
|
|
|
|
|
ozone_message_t ozone_message = {0}; |
|
|
int interval_key_press_frequency = 0; //每按下4次进行清0 |
|
|
int interval_key_press_frequency = 0; //每按下4次进行清0 |
|
|
int g_ozen_gears = 1; //上电默认输出100%,下次输出50%的PWM |
|
|
|
|
|
static bool switch_key_state = false; |
|
|
|
|
|
|
|
|
int g_ozen_gears = 1; //上电默认输出100%,按下一次档位按键输出50%的PWM |
|
|
int time_key_press_frequency = 0; //每按下4次进行清0 |
|
|
int time_key_press_frequency = 0; //每按下4次进行清0 |
|
|
bool g_interva_flag = false; |
|
|
|
|
|
//###################### 高低档按键开始 ################// |
|
|
//###################### 高低档按键开始 ################// |
|
|
void ozone_work_mode(int mode) { |
|
|
void ozone_work_mode(int mode) { |
|
|
if (ozone_work_state != 2) { |
|
|
|
|
|
ozone_work_state = 1; |
|
|
|
|
|
|
|
|
if (ozone_message.ozone_work_state != 2) { |
|
|
|
|
|
ozone_message.ozone_work_state = 1; |
|
|
} |
|
|
} |
|
|
port_fan_set(true); |
|
|
port_fan_set(true); |
|
|
switch (mode) { |
|
|
switch (mode) { |
|
@ -41,15 +37,16 @@ void ozone_work_mode(int mode) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void update_interval_down_begin_sys_time(void) { |
|
|
void update_interval_down_begin_sys_time(void) { |
|
|
g_count_interval_down_begin_sys_time = get_sys_ticket(); |
|
|
|
|
|
|
|
|
ozone_message.count_interval_down_begin_sys_time = get_sys_ticket(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void update_ozer_work_state(void) { |
|
|
void update_ozer_work_state(void) { |
|
|
// int gears_time_key_press_frequency = 0; |
|
|
// int gears_time_key_press_frequency = 0; |
|
|
if (g_ozone_interva_stat == true && |
|
|
|
|
|
g_interva_flag == true) { //如果现在是间歇休息时间,直接开始工作 |
|
|
|
|
|
|
|
|
if (ozone_message.ozone_interva_state == true && |
|
|
|
|
|
ozone_message.interva_flag == |
|
|
|
|
|
true) { //如果现在是间歇休息时间,直接开始工作 |
|
|
update_interval_down_begin_sys_time(); |
|
|
update_interval_down_begin_sys_time(); |
|
|
g_interva_flag = false; |
|
|
|
|
|
|
|
|
ozone_message.interva_flag = false; |
|
|
} |
|
|
} |
|
|
// if (time_key_press_frequency == 0) { |
|
|
// if (time_key_press_frequency == 0) { |
|
|
// gears_time_key_press_frequency = 4; |
|
|
// gears_time_key_press_frequency = 4; |
|
@ -143,55 +140,44 @@ void gears_led_on(uint8_t led_number) { |
|
|
#endif |
|
|
#endif |
|
|
//###################### 高低档按键结束 ################// |
|
|
//###################### 高低档按键结束 ################// |
|
|
|
|
|
|
|
|
//###################### 定时按键开始 ################// |
|
|
|
|
|
|
|
|
//###################### 定时按键开始 ################//ozone_message |
|
|
void set_ozone_work_time(void) { |
|
|
void set_ozone_work_time(void) { |
|
|
if (!ozone_work_state) { //如果现在不是工作状态,直接开始工作 |
|
|
|
|
|
|
|
|
if (!ozone_message.ozone_work_state) { //如果现在不是工作状态,直接开始工作 |
|
|
set_ozen_gears(0); |
|
|
set_ozen_gears(0); |
|
|
} |
|
|
} |
|
|
ozone_work_state = 2; //处于定时工作状态 |
|
|
|
|
|
|
|
|
ozone_message.ozone_work_state = 2; //处于定时工作状态 |
|
|
//获取现在的时间,作为判断倒计时时间的基准 |
|
|
//获取现在的时间,作为判断倒计时时间的基准 |
|
|
g_count_down_begin_sys_time = get_sys_ticket(); |
|
|
|
|
|
|
|
|
ozone_message.count_down_begin_sys_time = get_sys_ticket(); |
|
|
port_fan_set(1); //风扇开始工作 |
|
|
port_fan_set(1); //风扇开始工作 |
|
|
switch (time_key_press_frequency) { |
|
|
switch (time_key_press_frequency) { |
|
|
case 5: |
|
|
case 5: |
|
|
time_key_press_frequency = 0; |
|
|
time_key_press_frequency = 0; |
|
|
case 0: // 30min |
|
|
case 0: // 30min |
|
|
// g_ozone_work_time = 7200000; |
|
|
|
|
|
g_ozone_work_time = 1800000; |
|
|
|
|
|
printf("g_ozone_work_time:%d", g_ozone_work_time); |
|
|
|
|
|
time_key_press_frequency = 1; |
|
|
time_key_press_frequency = 1; |
|
|
timing_led_on(0); |
|
|
timing_led_on(0); |
|
|
break; |
|
|
break; |
|
|
case 1: // 60min |
|
|
case 1: // 60min |
|
|
// g_ozone_work_time = 14400000; |
|
|
|
|
|
g_ozone_work_time = 3600000; |
|
|
|
|
|
printf("g_ozone_work_time:%d", g_ozone_work_time); |
|
|
|
|
|
time_key_press_frequency = 2; |
|
|
time_key_press_frequency = 2; |
|
|
timing_led_on(1); |
|
|
timing_led_on(1); |
|
|
break; |
|
|
break; |
|
|
case 2: // 90min |
|
|
case 2: // 90min |
|
|
// g_ozone_work_time = 21600000; |
|
|
|
|
|
g_ozone_work_time = 5400000; |
|
|
|
|
|
printf("g_ozone_work_time:%d", g_ozone_work_time); |
|
|
|
|
|
time_key_press_frequency = 3; |
|
|
time_key_press_frequency = 3; |
|
|
timing_led_on(2); |
|
|
timing_led_on(2); |
|
|
break; |
|
|
break; |
|
|
case 3: // 120min |
|
|
case 3: // 120min |
|
|
// g_ozone_work_time = 28800000; |
|
|
|
|
|
g_ozone_work_time = 7200000; |
|
|
|
|
|
printf("g_ozone_work_time:%d", g_ozone_work_time); |
|
|
|
|
|
time_key_press_frequency = 4; |
|
|
time_key_press_frequency = 4; |
|
|
timing_led_on(3); |
|
|
timing_led_on(3); |
|
|
break; |
|
|
break; |
|
|
case 4: |
|
|
case 4: |
|
|
ozone_work_state = 1; //一直工作 |
|
|
|
|
|
printf("close timing"); |
|
|
|
|
|
timing_led_on(4); //关闭所有定时灯 |
|
|
|
|
|
|
|
|
ozone_message.ozone_work_state = 1; //一直工作 |
|
|
time_key_press_frequency = 0; |
|
|
time_key_press_frequency = 0; |
|
|
break; |
|
|
break; |
|
|
default: |
|
|
default: |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
ozone_message.timing_rank = time_key_press_frequency; |
|
|
|
|
|
ozone_message.ozone_work_time = time_key_press_frequency * TIMINT_TIME; //定时时间 |
|
|
|
|
|
printf("ozone_message.ozone_work_time%d\r\n", ozone_message.ozone_work_time); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void timing_ozone_work_over(void) { |
|
|
void timing_ozone_work_over(void) { |
|
@ -200,9 +186,10 @@ void timing_ozone_work_over(void) { |
|
|
* |
|
|
* |
|
|
*/ |
|
|
*/ |
|
|
close_ozone_work(); |
|
|
close_ozone_work(); |
|
|
ozone_work_state = 0; |
|
|
|
|
|
g_ozone_work_time = 0; |
|
|
|
|
|
switch_key_state = false; |
|
|
|
|
|
|
|
|
ozone_message.ozone_work_state = 0; |
|
|
|
|
|
ozone_message.ozone_work_time = 0; |
|
|
|
|
|
ozone_message.switch_key_state = false; |
|
|
|
|
|
time_key_press_frequency = 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -210,13 +197,19 @@ void timing_ozone_work_over(void) { |
|
|
* |
|
|
* |
|
|
*/ |
|
|
*/ |
|
|
void is_ozone_work_time_over(void) { |
|
|
void is_ozone_work_time_over(void) { |
|
|
if (port_haspassedms(g_count_down_begin_sys_time) >= g_ozone_work_time) { |
|
|
|
|
|
g_count_down_begin_sys_time = get_sys_ticket(); |
|
|
|
|
|
timing_ozone_work_over(); |
|
|
|
|
|
// interval_key_press_frequency = 0; |
|
|
|
|
|
g_ozone_interva_stat = false; |
|
|
|
|
|
interval_key_press_frequency = 0; |
|
|
|
|
|
printf("time over\r\n"); |
|
|
|
|
|
|
|
|
if (port_haspassedms(ozone_message.count_down_begin_sys_time) >= |
|
|
|
|
|
TIMINT_TIME) { |
|
|
|
|
|
ozone_message.count_down_begin_sys_time = get_sys_ticket(); |
|
|
|
|
|
if (ozone_message.timing_rank == 1) { |
|
|
|
|
|
timing_ozone_work_over(); |
|
|
|
|
|
// interval_key_press_frequency = 0; |
|
|
|
|
|
ozone_message.ozone_interva_state = false; |
|
|
|
|
|
interval_key_press_frequency = 0; |
|
|
|
|
|
printf("time over\r\n"); |
|
|
|
|
|
} else { |
|
|
|
|
|
ozone_message.timing_rank--; |
|
|
|
|
|
timing_led_on(ozone_message.timing_rank - 1); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -288,7 +281,9 @@ void timing_led_on(uint8_t led_number) { |
|
|
//###################### 定时按键结束 ################// |
|
|
//###################### 定时按键结束 ################// |
|
|
|
|
|
|
|
|
//###################### 开关按键开始 ################// |
|
|
//###################### 开关按键开始 ################// |
|
|
bool get_ozone_starting_up_state(void) { return switch_key_state; } |
|
|
|
|
|
|
|
|
bool get_ozone_starting_up_state(void) { |
|
|
|
|
|
return ozone_message.switch_key_state; |
|
|
|
|
|
} |
|
|
/** |
|
|
/** |
|
|
* @brief 开机后工作状态 |
|
|
* @brief 开机后工作状态 |
|
|
* |
|
|
* |
|
@ -309,14 +304,14 @@ void set_ozone_starting_up(void) { |
|
|
*/ |
|
|
*/ |
|
|
void set_ozone_shutdown(void) { |
|
|
void set_ozone_shutdown(void) { |
|
|
interval_key_press_frequency = 0; |
|
|
interval_key_press_frequency = 0; |
|
|
g_ozone_interva_stat = false; |
|
|
|
|
|
|
|
|
ozone_message.ozone_interva_state = false; |
|
|
memset(&adc, 0, sizeof(adc)); |
|
|
memset(&adc, 0, sizeof(adc)); |
|
|
close_ozone_work(); |
|
|
close_ozone_work(); |
|
|
} |
|
|
} |
|
|
void process_switch_key(void) { |
|
|
void process_switch_key(void) { |
|
|
//开机以后按照上次关机前的设置进行工作 |
|
|
//开机以后按照上次关机前的设置进行工作 |
|
|
switch_key_state = !switch_key_state; |
|
|
|
|
|
if (switch_key_state) { //开机 |
|
|
|
|
|
|
|
|
ozone_message.switch_key_state = !ozone_message.switch_key_state; |
|
|
|
|
|
if (ozone_message.switch_key_state) { //开机 |
|
|
set_ozone_starting_up(); |
|
|
set_ozone_starting_up(); |
|
|
} else { //关机 |
|
|
} else { //关机 |
|
|
set_ozone_shutdown(); |
|
|
set_ozone_shutdown(); |
|
@ -325,32 +320,50 @@ void process_switch_key(void) { |
|
|
//###################### 开关按键结束 ################// |
|
|
//###################### 开关按键结束 ################// |
|
|
|
|
|
|
|
|
//###################### 间歇按键开始 ################// |
|
|
//###################### 间歇按键开始 ################// |
|
|
|
|
|
void set_rgb_on(void) { |
|
|
|
|
|
int rgbx_flicker = 0; |
|
|
|
|
|
if (g_ozen_gears == 0) { |
|
|
|
|
|
rgbx_flicker = 2; |
|
|
|
|
|
} else { |
|
|
|
|
|
rgbx_flicker = g_ozen_gears - 1; |
|
|
|
|
|
} |
|
|
|
|
|
gears_led_on(rgbx_flicker); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void set_rgb_off(void) { |
|
|
|
|
|
gears_led_on(3); //关闭RGB |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void set_rgb_flicker(void) { |
|
|
|
|
|
static uint32_t rgb_ticket = 0; |
|
|
|
|
|
static uint8_t rgb_ticket_count = 0; |
|
|
|
|
|
if (port_haspassedms(rgb_ticket) > 1000) { |
|
|
|
|
|
rgb_ticket = get_sys_ticket(); |
|
|
|
|
|
if (rgb_ticket_count < 3) { |
|
|
|
|
|
set_rgb_on(); |
|
|
|
|
|
} else { |
|
|
|
|
|
set_rgb_off(); |
|
|
|
|
|
rgb_ticket_count = 0; |
|
|
|
|
|
} |
|
|
|
|
|
rgb_ticket_count++; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void set_interval_time(void) { |
|
|
void set_interval_time(void) { |
|
|
update_interval_down_begin_sys_time(); |
|
|
update_interval_down_begin_sys_time(); |
|
|
bool led_state = false; |
|
|
|
|
|
switch (interval_key_press_frequency) { |
|
|
switch (interval_key_press_frequency) { |
|
|
case 0: |
|
|
case 0: |
|
|
led_state = port_led0_get_state(); |
|
|
|
|
|
// Delayms(300); |
|
|
|
|
|
port_led0_set(!led_state); |
|
|
|
|
|
Delayms(100); |
|
|
|
|
|
port_led0_set(led_state); |
|
|
|
|
|
printf("begin interval\n"); |
|
|
printf("begin interval\n"); |
|
|
g_ozone_interva_stat = true; |
|
|
|
|
|
// g_ozone_interval_time = 300000; // 5分钟 |
|
|
|
|
|
g_ozone_interval_time = 60000; // 5分钟 |
|
|
|
|
|
|
|
|
ozone_message.ozone_interva_state = true; |
|
|
|
|
|
ozone_message.ozone_interval_time = INTERVAL_TIME; // 5分钟 |
|
|
|
|
|
// g_ozone_interval_time = 60000; // 5分钟 |
|
|
interval_key_press_frequency = 1; |
|
|
interval_key_press_frequency = 1; |
|
|
break; |
|
|
break; |
|
|
case 1: |
|
|
case 1: |
|
|
led_state = port_led1_get_state(); |
|
|
|
|
|
// Delayms(300); |
|
|
|
|
|
port_led1_set(!led_state); |
|
|
|
|
|
Delayms(100); |
|
|
|
|
|
port_led1_set(led_state); |
|
|
|
|
|
printf("stop interval"); |
|
|
printf("stop interval"); |
|
|
g_ozone_interva_stat = false; |
|
|
|
|
|
|
|
|
ozone_message.ozone_interva_state = false; |
|
|
interval_key_press_frequency = 0; |
|
|
interval_key_press_frequency = 0; |
|
|
|
|
|
set_rgb_on(); //间歇结束以后RGB应该处于常亮状态 |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -380,15 +393,15 @@ void ozone_interval_over(void) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void is_ozone_interva_time_over(void) { |
|
|
void is_ozone_interva_time_over(void) { |
|
|
if (port_haspassedms(g_count_interval_down_begin_sys_time) >= |
|
|
|
|
|
g_ozone_interval_time) { |
|
|
|
|
|
|
|
|
if (port_haspassedms(ozone_message.count_interval_down_begin_sys_time) >= |
|
|
|
|
|
ozone_message.ozone_interval_time) { |
|
|
update_interval_down_begin_sys_time(); |
|
|
update_interval_down_begin_sys_time(); |
|
|
if (g_interva_flag == false) { |
|
|
|
|
|
g_interva_flag = true; |
|
|
|
|
|
|
|
|
if (ozone_message.interva_flag == false) { |
|
|
|
|
|
ozone_message.interva_flag = true; |
|
|
printf("work over\r\n"); |
|
|
printf("work over\r\n"); |
|
|
ozone_interval_over(); |
|
|
ozone_interval_over(); |
|
|
} else if (g_interva_flag == true) { |
|
|
|
|
|
g_interva_flag = false; |
|
|
|
|
|
|
|
|
} else if (ozone_message.interva_flag == true) { |
|
|
|
|
|
ozone_message.interva_flag = false; |
|
|
printf("work begin\r\n"); |
|
|
printf("work begin\r\n"); |
|
|
ozone_interval_begin(); |
|
|
ozone_interval_begin(); |
|
|
} |
|
|
} |
|
|