From 7ff7ce16ea9febfd11db4ff61e13d112d4b2ba02 Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期六, 06 五月 2023 15:16:41 +0800 Subject: [PATCH] V1.72 测试完成 --- 源码/核心板/Src/application/beep_logic_app.c | 228 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 168 insertions(+), 60 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" index 945a7e9..21445a2 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" @@ -4,69 +4,177 @@ #include "global_param.h" #include "dw_app.h" +#define ONTIME1 1 // 100ms +#define OFFTIME1 0 // 100ms + +#define ONTIME2 1 // 100ms +#define OFFTIME2 0 // 100ms + +#define ONTIME3 5 // 500ms +#define OFFTIME3 5 // 500ms + +int32_t min_dist1,min_dist2; +extern u16 JDQ_time; +void Relay1Task(u16 min_dist) +{ + static u8 distoffset1=0,distoffset2=0; + static uint8_t beep_state,timer_state,beep_timer,beep_ontime,beep_offtime; + if (min_dist <= g_com_map[ALARM_DISTANCE2]+distoffset1) + { + beep_ontime = 1; + beep_offtime = 0; + beep_state=2; + distoffset1=0; + distoffset2=0; + beep_timer = 0; + timer_state = 1; + } + else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset2) + { + beep_state=0; + distoffset1=0; + distoffset2=0; + beep_timer = 0; + timer_state = 1; + } + else{ + beep_state=0; + distoffset1=0; + distoffset2=0; + beep_timer = 0; + timer_state = 1; + } + + if(beep_state!=0) + { + if(timer_state==1) + { + if(beep_timer++ < beep_ontime) + { + RELAY1_ON; + + }else{ + timer_state=0; + beep_timer=0; + } + }else{ + if(beep_timer++ < beep_offtime) + { + RELAY1_OFF; + + }else{ + timer_state=1; + beep_timer=0; + } + + } + }else { + RELAY1_OFF; + // RELAY2_OFF; + } +} +void Relay2Task(u16 min_dist) +{ + static u8 distoffset12=0,distoffset22=0; + static uint8_t beep_state2,timer_state2,beep_timer2,beep_ontime2,beep_offtime2; + if (min_dist <= g_com_map[ALARM_DISTANCE2]+distoffset12) + { + beep_state2=0; + distoffset12=0; + distoffset22=0; + timer_state2=1; + beep_timer2=0; + } + else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset22) + { + beep_ontime2 = 1; + beep_offtime2 = 0; + beep_state2=2; + distoffset12=0; + distoffset22=0; + timer_state2=1; + beep_timer2=0; + } + else{ + beep_state2=0; + distoffset12=0; + distoffset22=0; + timer_state2=1; + beep_timer2=0; + } + + if(beep_state2!=0) + { + if(timer_state2==1) + { + if(beep_timer2++ < beep_ontime2) + { + RELAY2_ON; + + }else{ + timer_state2=0; + beep_timer2=0; + } + }else{ + if(beep_timer2++ < beep_offtime2) + { + RELAY2_OFF; + + }else{ + timer_state2=1; + beep_timer2=0; + } + + } + }else { + // RELAY1_OFF; + RELAY2_OFF; + } +} void main_logic(void) //主逻辑在这里执行 -{uint16_t i, min_dist; +{ + uint16_t i; //除UWB之外的其他代码... static uint16_t beep_judge_cnt = 0; - if(beep_judge_cnt++ >= 200) - { - beep_judge_cnt = 0; - min_dist=0xffff; - for(i = 0; i < 255;i++) - { - if(g_Tagdist[i] < min_dist) - { - min_dist=g_Tagdist[i]; - } - - } - if(min_dist <= g_com_map[ALARM_DISTANCE]) - { - switch(g_com_map[ALARM_DEV]) - { - case 0: - BEEP2_ON; - BEEP_OFF; - OUT2_OFF; - break; - case 1: - BEEP_ON; - BEEP2_OFF; - OUT2_OFF; - break; - case 2: - OUT2_ON; - BEEP_OFF; - BEEP2_OFF; - break; - default: - BEEP2_ON; - BEEP_ON; - OUT2_ON; - break; - } - } - else - { - switch(g_com_map[ALARM_DEV]) - { - case 0: - BEEP2_OFF; - break; - case 1: - BEEP_OFF; - break; - case 2: - OUT2_OFF; - break; - default: - BEEP2_OFF; - BEEP_OFF; - OUT2_OFF; - break; - } - } - } + if(g_com_map[ALARM_DISTANCE1]!=0||g_com_map[ALARM_DISTANCE2]!=0||g_com_map[ALARM_DISTANCE3]!=0||g_com_map[RELAY2_DISTANCE1]!=0||g_com_map[RELAY2_DISTANCE2]!=0||g_com_map[RELAY2_DISTANCE3]!=0) + { + if(beep_judge_cnt++ >= 100) + { + beep_judge_cnt = 0; + min_dist1=0x1ffff; + min_dist2=0x1ffff; + for(i = 0; i < 255;i++) + { + if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1]) + { + min_dist1=g_Tagdist[i]; + } + if(g_Tagdist[i] < min_dist2&&g_Tagdist[i]>g_com_map[RELAY2_DISTANCE1]) + { + min_dist2=g_Tagdist[i]; + } + + } + Relay1Task(min_dist1); + Relay2Task(min_dist2); + + } + }else{ + if(g_com_map[RELAY1ON_INDEX]==1) + { + RELAY1_ON; + }else if(g_com_map[RELAY1ON_INDEX]==0) + { + RELAY1_OFF; + } + if(g_com_map[RELAY2ON_INDEX]==1) + { + RELAY2_ON; + }else if(g_com_map[RELAY2ON_INDEX]==0) + { + RELAY2_OFF; + } + } } -- Gitblit v1.9.3