From 0a9a1b9387ea9324ab904cc1dee88fd34f01723d Mon Sep 17 00:00:00 2001 From: Mit4el Date: Wed, 15 May 2024 22:22:55 +0300 Subject: [PATCH] =?UTF-8?q?Impulse=20-=20=D0=B4=D0=B2=D0=B0=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B6=D0=B8=D0=BC=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/sensors/Impulse/Impulse.cpp | 33 ++++++++++++++++++------ src/modules/sensors/Impulse/modinfo.json | 10 ++++--- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/modules/sensors/Impulse/Impulse.cpp b/src/modules/sensors/Impulse/Impulse.cpp index e84a1123..b32a2693 100644 --- a/src/modules/sensors/Impulse/Impulse.cpp +++ b/src/modules/sensors/Impulse/Impulse.cpp @@ -12,7 +12,9 @@ private: bool _lastButtonState = LOW; unsigned long _lastDebounceTime = 0; int _debounceDelay = 50; + int _timeORcount = 0; int _count = 0; + int CNT = 0; unsigned long timing; public: @@ -22,6 +24,8 @@ public: jsonRead(parameters, F("pin"), _pin); jsonRead(parameters, F("pinMode"), _pinMode); jsonRead(parameters, F("debounceDelay"), _debounceDelay); + jsonRead(parameters, F("count"), _count); + jsonRead(parameters, F("timeORcount"), _timeORcount); jsonRead(parameters, "int", _int); _round = 0; @@ -53,18 +57,31 @@ public: if (_reading != _buttonState) { _buttonState = _reading; - _count++; + CNT++; } - if (_count == 1) + if (CNT == 1) { timing = millis(); } - if (millis() - timing > _int * 1000 && _count > 1) - { - timing = millis(); - value.valD = _count; - regEvent(value.valD, F("Impulse")); - _count = 0; + if (!_timeORcount) + { // работаем по времени + if (millis() - timing > _int * 1000 && CNT > 1) + { + timing = millis(); + value.valD = CNT; + regEvent(value.valD, F("Impulse")); + CNT = 0; + } + } + else + { // работаем по количеству импульсов + if (_count && CNT == _count) + { + value.valD = 1; + regEvent(value.valD, F("Impulse")); + CNT = 0; + } + } } diff --git a/src/modules/sensors/Impulse/modinfo.json b/src/modules/sensors/Impulse/modinfo.json index 81095235..bc4d8587 100644 --- a/src/modules/sensors/Impulse/modinfo.json +++ b/src/modules/sensors/Impulse/modinfo.json @@ -15,7 +15,9 @@ "pin": 16, "pinMode": "INPUT", "debounceDelay": 3, - "multiply": 1 + "multiply": 1, + "count": 0, + "timeORcount":0 } ], "about": { @@ -24,7 +26,7 @@ "authorGit": "https://github.com/avaksru", "specialThanks": "", "moduleName": "Impulse", - "moduleVersion": "2.0", + "moduleVersion": "3.0", "usedRam": { "esp32_4mb": 15, "esp8266_4mb": 15 @@ -35,7 +37,9 @@ "int": "Период сбора импульсов в секундах", "pin": "Укажите GPIO номер пина для чтения импульсов", "pinMode": "Может быть INPUT_PULLUP INPUT_PULLDOWN INPUT", - "debounceDelay": "Время обработки дребезга (миллисекунд)" + "debounceDelay": "Время обработки дребезга (миллисекунд)", + "count": "количество импульсов для выработки события c 1(единицей в данных). По событию можно прибавлять к другой переменной, так же домножить на multiply. Например 32имп = 0.1кВт => count=32, multiply=0.1", + "timeORcount": "0 - выдает количество импульсов за int секунд; 1 - выдает событие с 1 когда количество импульсов наберется равным count" } }, "defActive": true,