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