| | |
| | | #define ONTIME3 5 // 500ms |
| | | #define OFFTIME3 5 // 500ms |
| | | |
| | | uint16_t min_dist1,min_dist2; |
| | | int32_t min_dist1,min_dist2; |
| | | extern u16 JDQ_time; |
| | | void Relay1Task(u16 min_dist) |
| | | u8 JDQgroup1_state,JDQgroup2_state; |
| | | void Relay1Task(void) |
| | | { |
| | | 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) |
| | | if (min_dist1 <= g_com_map[ALARM_DISTANCE2]+distoffset1) |
| | | { |
| | | beep_ontime = 1; |
| | | JDQgroup1_state=2; |
| | | } |
| | | else if (min_dist1 <= g_com_map[ALARM_DISTANCE3]+distoffset2) |
| | | { |
| | | JDQgroup1_state=1; |
| | | } |
| | | else{ |
| | | JDQgroup1_state=0; |
| | | } |
| | | |
| | | if (min_dist2 <= g_com_map[RELAY2_DISTANCE2]+distoffset1) |
| | | { |
| | | JDQgroup2_state=2; |
| | | } |
| | | else if (min_dist2 <= g_com_map[RELAY2_DISTANCE3]+distoffset2) |
| | | { |
| | | JDQgroup2_state=1; |
| | | } |
| | | else{ |
| | | JDQgroup2_state=0; |
| | | } |
| | | |
| | | if(JDQgroup1_state==2||JDQgroup2_state==2) |
| | | { |
| | | beep_ontime = 1; |
| | | beep_offtime = 0; |
| | | beep_state=2; |
| | | distoffset1=0; |
| | | distoffset2=0; |
| | | } |
| | | else if (min_dist <= g_com_map[ALARM_DISTANCE3]+distoffset2) |
| | | { |
| | | beep_ontime = JDQ_time; |
| | | beep_timer = 0; |
| | | timer_state = 1; |
| | | }else if(JDQgroup1_state==1||JDQgroup2_state==1) |
| | | { |
| | | beep_ontime = JDQ_time; |
| | | beep_offtime = JDQ_time; |
| | | beep_state=1; |
| | | distoffset1=0; |
| | | distoffset2=0; |
| | | } |
| | | else{ |
| | | beep_state=0; |
| | | }else{ |
| | | beep_state=0; |
| | | distoffset1=0; |
| | | distoffset2=0; |
| | | } |
| | | beep_timer = 0; |
| | | timer_state = 1; |
| | | } |
| | | |
| | | if(beep_state!=0) |
| | | { |
| | |
| | | { |
| | | if(beep_timer++ < beep_ontime) |
| | | { |
| | | RELAY2_ON; |
| | | RELAY1_ON; |
| | | |
| | | }else{ |
| | |
| | | }else{ |
| | | if(beep_timer++ < beep_offtime) |
| | | { |
| | | RELAY2_OFF; |
| | | RELAY1_OFF; |
| | | |
| | | }else{ |
| | |
| | | } |
| | | }else { |
| | | RELAY1_OFF; |
| | | // RELAY2_OFF; |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | void Relay2Task(u16 min_dist) |
| | |
| | | beep_state2=2; |
| | | distoffset12=0; |
| | | distoffset22=0; |
| | | timer_state2=1; |
| | | beep_timer2=0; |
| | | } |
| | | else if (min_dist <= g_com_map[RELAY2_DISTANCE3]+distoffset22) |
| | | { |
| | |
| | | beep_state2=0; |
| | | distoffset12=0; |
| | | distoffset22=0; |
| | | timer_state2=1; |
| | | beep_timer2=0; |
| | | } |
| | | |
| | | if(beep_state2!=0) |
| | |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | #define RELAY2IDHEAD 9 |
| | | extern u16 tagid_list[TAG_NUM_IN_SYS]; |
| | | void main_logic(void) //主é»è¾å¨è¿éæ§è¡ |
| | | { |
| | | uint16_t i; |
| | |
| | | if(beep_judge_cnt++ >= 100) |
| | | { |
| | | beep_judge_cnt = 0; |
| | | min_dist1=0xffff; |
| | | min_dist2=0xffff; |
| | | min_dist1=0x1ffff; |
| | | min_dist2=0x1ffff; |
| | | for(i = 0; i < 255;i++) |
| | | { |
| | | if((tagid_list[i]>>12)!=RELAY2IDHEAD) |
| | | { |
| | | if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1]) |
| | | { |
| | | min_dist1=g_Tagdist[i]; |
| | | } |
| | | }else{ |
| | | 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); |
| | | Relay1Task(); |
| | | // Relay2Task(min_dist2); |
| | | |
| | | } |
| | | }else{ |