| | |
| | | #define OFFTIME1 0 // 100ms |
| | | |
| | | #define ONTIME2 1 // 100ms |
| | | #define OFFTIME2 1 // 100ms |
| | | #define OFFTIME2 0 // 100ms |
| | | |
| | | #define ONTIME3 1 // 500ms |
| | | #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, min_dist; |
| | | 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) |
| | | { |
| | | min_dist=g_Tagdist[i]; |
| | | } |
| | | |
| | | } |
| | | |
| | | if(min_dist <= g_com_map[ALARM_DISTANCE1]) |
| | | { |
| | | beep_ontime = ONTIME1; |
| | | beep_offtime = OFFTIME1; |
| | | beep_state=1; |
| | | LED0_ON; |
| | | } |
| | | // else if (min_dist <= g_com_map[ALARM_DISTANCE2]) |
| | | // { |
| | | // beep_ontime = ONTIME2; |
| | | // beep_offtime = OFFTIME2; |
| | | // beep_state=1; |
| | | // }else if (min_dist <= g_com_map[ALARM_DISTANCE3]) |
| | | // { |
| | | // beep_ontime = ONTIME3; |
| | | // beep_offtime = OFFTIME3; |
| | | // beep_state=1; |
| | | // } |
| | | else{ |
| | | LED0_OFF; |
| | | beep_state=0; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | 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_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; |
| | | } |
| | | } |
| | | }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; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |