zhyinch
2021-05-10 95e4a4995ac7403d06ebb13e706ac0c4c7d47f4f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#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(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;
            }
    
    }
}