From 65062d0d5b21f838aa0043a15ce54cfab8d72c43 Mon Sep 17 00:00:00 2001
From: wujiazhi <1147861305@qq.com>
Date: Tue, 11 Jun 2024 14:23:53 +0800
Subject: [PATCH] 1.Fixed communication failure between MCU and wireless module 2.Fix the wrong judgment of alkaline lithium power
---
Soft/check_out.c | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 166 insertions(+), 0 deletions(-)
diff --git a/Soft/check_out.c b/Soft/check_out.c
new file mode 100644
index 0000000..6174d59
--- /dev/null
+++ b/Soft/check_out.c
@@ -0,0 +1,166 @@
+#include "check_out.h"
+#include "gpio.h"
+
+#define LOW_FLOW_CNT 3
+#define CHECK_PERIOD 250
+#define WORK_FLOW_PARA 14400
+
+CHECK_CAL_INF check_cal_g = {
+ .device_type = G10
+};
+
+uint8_t get_led_para_output_flag(void)
+{
+ return check_cal_g.pluse_flag;
+}
+
+
+void set_led_para_output_flag(uint8_t flag)
+{
+ check_cal_g.pluse_flag = flag;
+}
+/*����ϵͳ�궨֮ǰ�ij�ʼ������*/
+void led_para_output_init(void)
+{
+
+ switch (check_cal_g.device_type)
+ {
+ case G6: check_cal_g.check_fre = 0.005;
+ check_cal_g.check_fre_low = 0.001;
+ check_cal_g.check_fre_flow = 0.9;
+ break;
+ case G10: check_cal_g.check_fre = 0.01;
+ check_cal_g.check_fre_low = 0.005;
+ check_cal_g.check_fre_flow = 1.45;
+ break;
+ case G16: check_cal_g.check_fre = 0.01;
+ check_cal_g.check_fre_low = 0.005;
+ check_cal_g.check_fre_flow = 2.3;
+ break;
+ case G25: check_cal_g.check_fre = 0.01;
+ check_cal_g.check_fre_low = 0.005;
+ check_cal_g.check_fre_flow = 3.70;
+ break;
+
+ default: break;
+
+ }
+
+
+ check_cal_g.check_utotal = 0.1;
+ check_cal_g.low_pluse_out = check_cal_g.check_utotal;
+ check_cal_g.pluse_flag = 0;
+ check_cal_g.low_pluse_cnt = 0;
+ check_cal_g.work_period = CHECK_PERIOD;
+ LED_LOW;
+ //LOWER_PLUSE_LOW
+
+}
+
+
+uint16_t led_pluse_out(double flow)
+{
+ uint8_t new_pluse;
+ double data_differ;
+ double led_data_delay;
+ uint16_t time;
+ /*��Ƶ����ͨ��һ���õ��ۼƼ�¼ԭ�ȵ��ۼ���*/
+
+ check_cal_g.uvol = flow;
+ check_cal_g.check_utotal = check_cal_g.check_utotal + check_cal_g.uvol;//�ۼ�����
+ check_cal_g.workConInstantFlow = check_cal_g.uvol * WORK_FLOW_PARA;
+
+ /*�ж����������趨����Ƶ��,С�����л�*/
+ if(check_cal_g.workConInstantFlow < check_cal_g.check_fre_flow)
+ {
+ /*���������*/
+ if(check_cal_g.low_pluse_cnt == LOW_FLOW_CNT)
+ {
+ data_differ = check_cal_g.check_fre_low;
+ }else
+ {
+ check_cal_g.low_pluse_cnt ++;
+ }
+ }else
+ {
+ /*���������*/
+ if(check_cal_g.low_pluse_cnt == 0)
+ {
+ data_differ = check_cal_g.check_fre;
+ }else
+ {
+ check_cal_g.low_pluse_cnt --;
+ }
+ }
+
+ //data_differ = cal_gas_struct_g.check_fre;
+ if(check_cal_g.low_pluse_out <= 0)
+ {
+ check_cal_g.low_pluse_out = check_cal_g.check_utotal;
+ }
+
+ //��������� ��������ô��ǰԤ�����led���źš�
+ if((check_cal_g.check_utotal) >= (check_cal_g.low_pluse_out + data_differ))
+ {
+
+ if(check_cal_g.uvol > data_differ) //�쳣����·���,���Ʊ궨
+ {
+ check_cal_g.pluse_flag = 0;
+ return 0;
+ }
+ //Test_101_P
+ // if(check_cal_g.pluse_flag == 0)
+ {
+ led_data_delay = check_cal_g.check_utotal - (check_cal_g.low_pluse_out + data_differ) ;
+ led_data_delay = 1 - (led_data_delay / check_cal_g.uvol);
+ led_data_delay = check_cal_g.work_period * led_data_delay;//Ԥ��ʱ�䡣�ڴﵽ����ʱ��ʱ���ơ�
+ /*Ԥ��ʱ���Ƿ�ﵽ���Ƶ������㡣*/
+ //Test_001_P
+ if(led_data_delay <= 0)
+ {
+ // Test_011_P
+ LED_HIGH;
+ delay_ms(35);
+ LED_LOW;
+ time = 0;
+ //Test_011_P
+ }else if(led_data_delay < (double) (check_cal_g.work_period - 60))
+ {
+
+
+ //Test_111_P
+ if(led_data_delay < 2)
+ time = 1;
+ else
+ time = (uint16_t)led_data_delay;
+
+ delay_ms(time);
+ //Test_100_P
+ LED_HIGH;
+ delay_ms(35);
+ LED_LOW;
+
+ }else
+ {
+ //Test_100_P
+ delay_ms(check_cal_g.work_period - 60);
+ LED_HIGH;
+ delay_ms(35);
+ LED_LOW;
+ time = check_cal_g.work_period - 60;
+
+ }
+ //Test_110_P
+ check_cal_g.low_pluse_out = check_cal_g.low_pluse_out + data_differ;
+ check_cal_g.pluse_flag = 1;//�����һ�����ڴﵽҪ���˻��߳��ֳ���10L/s��������Ȳ����ǡ�
+
+
+ }
+
+ return (36 + time);
+ }
+ return 1;
+
+}
+
+
--
Gitblit v1.9.3