Impulse - два режима работы

This commit is contained in:
Mit4el
2024-05-15 22:22:55 +03:00
parent 794d51187e
commit 0a9a1b9387
2 changed files with 32 additions and 11 deletions

View File

@@ -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;
}
}
}

View File

@@ -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,