#include "beep_logic_app.h" #include "led.h" #include "beep.h" #include "global_param.h" #include "dw_app.h" #define ONTIME1 1 // 100ms #define OFFTIME1 0 // 100ms #define ONTIME2 1 // 100ms #define OFFTIME2 1 // 100ms #define ONTIME3 1 // 500ms #define OFFTIME3 5 // 500ms int16_t min_dist; void main_logic(void) //Ö÷Âß¼­ÔÚÕâÀïÖ´ÐÐ { static uint8_t beep_state,timer_state,beep_timer,beep_ontime,beep_offtime; int16_t i; //³ýUWBÖ®ÍâµÄÆäËû´úÂë... static uint16_t beep_judge_cnt = 0; if(beep_judge_cnt++ >= 100) { beep_judge_cnt = 0; min_dist=0x7fff; for(i = 0; i < 255;i++) { if(g_Tagdist[i] < min_dist) { min_dist=g_Tagdist[i]; } } if(min_dist <= g_com_map[ALARM_DISTANCE1]) { beep_ontime = ONTIME1; beep_offtime = OFFTIME1; beep_state=1; RELAY1_ON; RELAY2_ON; } else if (min_dist <= g_com_map[ALARM_DISTANCE2]) { beep_ontime = ONTIME2; beep_offtime = OFFTIME2; beep_state=1; RELAY2_ON; } //else if (min_dist <= g_com_map[ALARM_DISTANCE3]) // { // beep_ontime = ONTIME3; // beep_offtime = OFFTIME3; // beep_state=1; // } else{ beep_state=0; } if (min_dist >= g_com_map[ALARM_DISTANCE1]+10) { RELAY1_OFF; } if (min_dist >= g_com_map[ALARM_DISTANCE2]+10) { RELAY2_OFF; } if(beep_state==1) { if(timer_state==1) { if(beep_timer++ < beep_ontime) { 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{ timer_state=0; beep_timer=0; } }else{ if(beep_timer++ < beep_offtime) { 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; } }else{ timer_state=1; beep_timer=0; } } } 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; } } } }