#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
|
|
uint16_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 = JDQ_time;
|
beep_offtime = JDQ_time;
|
beep_state=2;
|
distoffset1=0;
|
distoffset2=0;
|
}
|
else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset2)
|
{
|
beep_ontime = JDQ_time;
|
beep_offtime = JDQ_time;
|
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;
|
|
}else{
|
timer_state=0;
|
beep_timer=0;
|
}
|
}else{
|
if(beep_timer++ < beep_offtime)
|
{
|
RELAY1_OFF;
|
|
}else{
|
timer_state=1;
|
beep_timer=0;
|
}
|
|
}
|
}
|
}
|
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[RELAY2_DISTANCE2]+distoffset12)
|
{
|
beep_ontime2 = JDQ_time;
|
beep_offtime2 = JDQ_time;
|
beep_state2=2;
|
distoffset12=0;
|
distoffset22=0;
|
}
|
else if (min_dist <= g_com_map[RELAY2_DISTANCE3]+distoffset22)
|
{
|
beep_ontime2 = JDQ_time;
|
beep_offtime2 = JDQ_time;
|
beep_state2=1;
|
distoffset12=0;
|
distoffset22=0;
|
}
|
else{
|
beep_state2=0;
|
distoffset12=0;
|
distoffset22=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;
|
}
|
|
}
|
}
|
}
|
void main_logic(void) //Ö÷Âß¼ÔÚÕâÀïÖ´ÐÐ
|
{
|
uint16_t i;
|
//³ýUWBÖ®ÍâµÄÆäËû´úÂë...
|
static uint16_t beep_judge_cnt = 0;
|
if(g_com_map[ALARM_DISTANCE1]!=0||g_com_map[ALARM_DISTANCE2]!=0||g_com_map[ALARM_DISTANCE3]!=0)
|
{
|
if(beep_judge_cnt++ >= 100)
|
{
|
beep_judge_cnt = 0;
|
min_dist1=0xffff;
|
min_dist2=0xffff;
|
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;
|
}
|
}
|
}
|