|
|
@ -11,9 +11,10 @@ bool g_ozone_interva_stat = false; |
|
|
|
int interval_key_press_frequency = 0; //每按下4次进行清0 |
|
|
|
int g_ozen_gears = 1; //上电默认输出100%,下次输出50%的PWM |
|
|
|
static bool switch_key_state = false; |
|
|
|
int time_key_press_frequency = 0; //每按下4次进行清0 |
|
|
|
bool g_interva_flag = false; |
|
|
|
//###################### 高低档按键开始 ################// |
|
|
|
void ozone_work_mode(int mode) { |
|
|
|
|
|
|
|
if (ozone_work_state != 2) { |
|
|
|
ozone_work_state = 1; |
|
|
|
} |
|
|
@ -36,14 +37,33 @@ void ozone_work_mode(int mode) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void update_interval_down_begin_sys_time(void) { |
|
|
|
g_count_interval_down_begin_sys_time = get_sys_ticket(); |
|
|
|
} |
|
|
|
|
|
|
|
void update_ozer_work_state(void) { |
|
|
|
// int gears_time_key_press_frequency = 0; |
|
|
|
if (g_ozone_interva_stat == true && |
|
|
|
g_interva_flag == true) { //如果现在是间歇休息时间,直接开始工作 |
|
|
|
update_interval_down_begin_sys_time(); |
|
|
|
g_interva_flag = false; |
|
|
|
} |
|
|
|
// if (time_key_press_frequency == 0) { |
|
|
|
// gears_time_key_press_frequency = 4; |
|
|
|
// } else { |
|
|
|
// gears_time_key_press_frequency = time_key_press_frequency - 1; |
|
|
|
// } |
|
|
|
// if (ozone_work_state == 2) { |
|
|
|
// timing_led_on(gears_time_key_press_frequency); //打开led灯 |
|
|
|
// } |
|
|
|
} |
|
|
|
|
|
|
|
void set_ozen_gears(int ozen_gears) { |
|
|
|
/** |
|
|
|
* @brief Construct a new switch object |
|
|
|
* 设置pwm输出 |
|
|
|
*/ |
|
|
|
// printf("g_sys_sick:%d\n", g_sys_sick); |
|
|
|
// printf("g_ozone_work_time:%d\n", g_ozone_work_time); |
|
|
|
// printf("g_count_down_begin_sys_time:%d\n", g_count_down_begin_sys_time); |
|
|
|
update_ozer_work_state(); //如果现在定时时间未结束并且处于间歇休息时间,直接设置为间歇工作时间 |
|
|
|
switch (ozen_gears) { |
|
|
|
case 0: |
|
|
|
set_pwm_frequency_duty(g_frequency, g_duty[0]); |
|
|
@ -78,6 +98,19 @@ void set_ozen_gears(int ozen_gears) { |
|
|
|
* |
|
|
|
* @param led_number 0亮红灯 1亮绿灯 2亮蓝灯 3全灭 |
|
|
|
*/ |
|
|
|
|
|
|
|
void gears_led_on(uint8_t led_number) { |
|
|
|
for (int i = 0; i < 3; i++) { |
|
|
|
if (i == led_number) { |
|
|
|
s_rgb[i].set_led_state = true; |
|
|
|
s_rgb[i].port_led_set(s_rgb[i].set_led_state); |
|
|
|
} else { |
|
|
|
s_rgb[i].set_led_state = false; |
|
|
|
s_rgb[i].port_led_set(s_rgb[i].set_led_state); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
#if 0 |
|
|
|
void gears_led_on(uint8_t led_number) { |
|
|
|
switch (led_number) { |
|
|
|
case 0: |
|
|
@ -104,12 +137,10 @@ void gears_led_on(uint8_t led_number) { |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
//###################### 高低档按键结束 ################// |
|
|
|
|
|
|
|
//###################### 定时按键开始 ################// |
|
|
|
|
|
|
|
int time_key_press_frequency = 0; //每按下4次进行清0 |
|
|
|
|
|
|
|
void set_ozone_work_time(void) { |
|
|
|
if (!ozone_work_state) { //如果现在不是工作状态,直接开始工作 |
|
|
|
set_ozen_gears(0); |
|
|
@ -118,37 +149,33 @@ void set_ozone_work_time(void) { |
|
|
|
//获取现在的时间,作为判断倒计时时间的基准 |
|
|
|
g_count_down_begin_sys_time = get_sys_ticket(); |
|
|
|
port_fan_set(1); //风扇开始工作 |
|
|
|
printf("定时开始g_sys_sick:%d\n", g_sys_sick); |
|
|
|
printf("定时开始g_count_down_begin_sys_time:%d\n", |
|
|
|
g_count_down_begin_sys_time); |
|
|
|
switch (time_key_press_frequency) { |
|
|
|
case 5: |
|
|
|
time_key_press_frequency = 0; |
|
|
|
case 0: //两小时 |
|
|
|
case 0: // 30min |
|
|
|
// g_ozone_work_time = 7200000; |
|
|
|
g_ozone_work_time = 10000; |
|
|
|
g_ozone_work_time = 1800000; |
|
|
|
printf("g_ozone_work_time:%d", g_ozone_work_time); |
|
|
|
time_key_press_frequency = 1; |
|
|
|
timing_led_on(0); |
|
|
|
break; |
|
|
|
case 1: //四小时 |
|
|
|
// g_ozone_work_time = 100000; |
|
|
|
g_ozone_work_time = 14400000; |
|
|
|
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; |
|
|
|
timing_led_on(1); |
|
|
|
break; |
|
|
|
case 2: //六小时 |
|
|
|
// g_ozone_work_time = 150000; |
|
|
|
g_ozone_work_time = 21600000; |
|
|
|
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; |
|
|
|
timing_led_on(2); |
|
|
|
break; |
|
|
|
case 3: //八小时 |
|
|
|
// g_ozone_work_time = 200000; |
|
|
|
// g_ozone_work_time = 60000;//60s |
|
|
|
g_ozone_work_time = 28800000; |
|
|
|
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; |
|
|
|
timing_led_on(3); |
|
|
@ -156,7 +183,7 @@ void set_ozone_work_time(void) { |
|
|
|
case 4: |
|
|
|
ozone_work_state = 1; //一直工作 |
|
|
|
printf("close timing"); |
|
|
|
timing_led_on(4); |
|
|
|
timing_led_on(4); //关闭所有定时灯 |
|
|
|
time_key_press_frequency = 0; |
|
|
|
break; |
|
|
|
default: |
|
|
@ -195,6 +222,19 @@ void is_ozone_work_time_over(void) { |
|
|
|
* |
|
|
|
* @param led_number 0亮led0 1亮led1 2亮led2 3亮led3 4全灭并代表臭氧机结束工作 |
|
|
|
*/ |
|
|
|
|
|
|
|
void timing_led_on(uint8_t led_number) { |
|
|
|
for (int i = 0; i < 4; i++) { |
|
|
|
if (i == led_number) { |
|
|
|
s_leds[i].set_led_state = true; |
|
|
|
s_leds[i].port_led_set(s_leds[i].set_led_state); |
|
|
|
} else { |
|
|
|
s_leds[i].set_led_state = false; |
|
|
|
s_leds[i].port_led_set(s_leds[i].set_led_state); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
#if 0 |
|
|
|
void timing_led_on(uint8_t led_number) { |
|
|
|
switch (led_number) { |
|
|
|
case 0: |
|
|
@ -233,22 +273,17 @@ void timing_led_on(uint8_t led_number) { |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
//###################### 定时按键结束 ################// |
|
|
|
|
|
|
|
//###################### 开关按键开始 ################// |
|
|
|
// void update_timing_interval_begin_time(void) { |
|
|
|
// /** |
|
|
|
// * @brief 更新倒计时时间 |
|
|
|
// * |
|
|
|
// */ |
|
|
|
// g_count_down_begin_sys_time = get_sys_ticket(); |
|
|
|
// g_count_interval_down_begin_sys_time = get_sys_ticket(); |
|
|
|
// } |
|
|
|
|
|
|
|
bool get_ozone_starting_up_state(void) { return switch_key_state; } |
|
|
|
/** |
|
|
|
* @brief 开机后工作状态 |
|
|
|
* |
|
|
|
*/ |
|
|
|
void set_ozone_starting_up(void) { |
|
|
|
// ozone_interval_begin(); |
|
|
|
int starting_up_ozen_gears = 0; |
|
|
|
if (g_ozen_gears == 0) { |
|
|
|
starting_up_ozen_gears = 2; |
|
|
@ -258,6 +293,10 @@ void set_ozone_starting_up(void) { |
|
|
|
//开启PWM输出 |
|
|
|
set_ozen_gears(starting_up_ozen_gears); |
|
|
|
} |
|
|
|
/** |
|
|
|
* @brief 关闭工作状态 |
|
|
|
* |
|
|
|
*/ |
|
|
|
void set_ozone_shutdown(void) { |
|
|
|
interval_key_press_frequency = 0; |
|
|
|
g_ozone_interva_stat = false; |
|
|
@ -266,9 +305,7 @@ void set_ozone_shutdown(void) { |
|
|
|
void process_switch_key(void) { |
|
|
|
//开机以后按照上次关机前的设置进行工作 |
|
|
|
switch_key_state = !switch_key_state; |
|
|
|
printf("switch_key_state%d\n", switch_key_state); |
|
|
|
if (switch_key_state) { //开机 |
|
|
|
// update_timing_interval_begin_time(); |
|
|
|
set_ozone_starting_up(); |
|
|
|
} else { //关机 |
|
|
|
set_ozone_shutdown(); |
|
|
@ -279,14 +316,13 @@ void process_switch_key(void) { |
|
|
|
//###################### 间歇按键开始 ################// |
|
|
|
|
|
|
|
void set_interval_time(void) { |
|
|
|
//获取现在的时间,作为判断倒计时时间的基准 |
|
|
|
g_count_interval_down_begin_sys_time = get_sys_ticket(); |
|
|
|
update_interval_down_begin_sys_time(); |
|
|
|
switch (interval_key_press_frequency) { |
|
|
|
case 0: |
|
|
|
printf("begin interval"); |
|
|
|
printf("begin interval\n"); |
|
|
|
g_ozone_interva_stat = true; |
|
|
|
g_ozone_interval_time = 300000; |
|
|
|
// g_ozone_interval_time = 3600000; |
|
|
|
// g_ozone_interval_time = 300000; // 5分钟 |
|
|
|
g_ozone_interval_time = 60000; // 5分钟 |
|
|
|
interval_key_press_frequency = 1; |
|
|
|
break; |
|
|
|
case 1: |
|
|
@ -298,36 +334,33 @@ void set_interval_time(void) { |
|
|
|
} |
|
|
|
|
|
|
|
static void ozone_interval_begin(void) { |
|
|
|
int interval_ozen_gears = 0, interval_time_key_press_frequency = 0; |
|
|
|
int interval_ozen_gears = 0; |
|
|
|
//int interval_time_key_press_frequency = 0; |
|
|
|
if (g_ozen_gears == 0) { |
|
|
|
interval_ozen_gears = 3; |
|
|
|
interval_ozen_gears = 2; |
|
|
|
} else { |
|
|
|
interval_ozen_gears = g_ozen_gears - 1; |
|
|
|
} |
|
|
|
if (time_key_press_frequency == 0) { |
|
|
|
interval_time_key_press_frequency = 4; |
|
|
|
} else { |
|
|
|
interval_time_key_press_frequency = time_key_press_frequency - 1; |
|
|
|
} |
|
|
|
// if (time_key_press_frequency == 0) { |
|
|
|
// interval_time_key_press_frequency = 4; |
|
|
|
// } else { |
|
|
|
// interval_time_key_press_frequency = time_key_press_frequency - 1; |
|
|
|
// } |
|
|
|
//开启PWM输出 |
|
|
|
set_ozen_gears(interval_ozen_gears); |
|
|
|
if (ozone_work_state == 2) { |
|
|
|
timing_led_on(interval_time_key_press_frequency); //打开led灯 |
|
|
|
} |
|
|
|
// if (ozone_work_state == 2) { |
|
|
|
// timing_led_on(interval_time_key_press_frequency); //打开led灯 |
|
|
|
// } |
|
|
|
} |
|
|
|
void ozone_interval_over(void) { close_ozone_work(); } |
|
|
|
static void close_ozone_work(void) { |
|
|
|
void ozone_interval_over(void) { |
|
|
|
set_pwm_frequency_duty(g_frequency, g_duty[3]); //关闭PWM输出 |
|
|
|
gears_led_on(3); //关闭RGB |
|
|
|
timing_led_on(4); //关闭4个led灯 |
|
|
|
port_fan_set(false); //风扇结束工作 |
|
|
|
} |
|
|
|
|
|
|
|
bool g_interva_flag = false; |
|
|
|
void is_ozone_interva_time_over(void) { |
|
|
|
if (port_haspassedms(g_count_interval_down_begin_sys_time) >= |
|
|
|
g_ozone_interval_time) { |
|
|
|
g_count_interval_down_begin_sys_time = get_sys_ticket(); |
|
|
|
update_interval_down_begin_sys_time(); |
|
|
|
if (g_interva_flag == false) { |
|
|
|
g_interva_flag = true; |
|
|
|
printf("work over\r\n"); |
|
|
@ -346,3 +379,10 @@ void power_on_ozone_work_state(void) { |
|
|
|
g_ozen_gears = 1; //为了点击开关后最高档工作 |
|
|
|
time_key_press_frequency = 5; //为了点击开关后无定时时间 |
|
|
|
} |
|
|
|
|
|
|
|
static void close_ozone_work(void) { |
|
|
|
set_pwm_frequency_duty(g_frequency, g_duty[3]); //关闭PWM输出 |
|
|
|
gears_led_on(3); //关闭RGB |
|
|
|
timing_led_on(4); //关闭4个led灯 |
|
|
|
port_fan_set(false); //风扇结束工作 |
|
|
|
} |