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; bool _lastButtonState = LOW;
unsigned long _lastDebounceTime = 0; unsigned long _lastDebounceTime = 0;
int _debounceDelay = 50; int _debounceDelay = 50;
int _timeORcount = 0;
int _count = 0; int _count = 0;
int CNT = 0;
unsigned long timing; unsigned long timing;
public: public:
@@ -22,6 +24,8 @@ public:
jsonRead(parameters, F("pin"), _pin); jsonRead(parameters, F("pin"), _pin);
jsonRead(parameters, F("pinMode"), _pinMode); jsonRead(parameters, F("pinMode"), _pinMode);
jsonRead(parameters, F("debounceDelay"), _debounceDelay); jsonRead(parameters, F("debounceDelay"), _debounceDelay);
jsonRead(parameters, F("count"), _count);
jsonRead(parameters, F("timeORcount"), _timeORcount);
jsonRead(parameters, "int", _int); jsonRead(parameters, "int", _int);
_round = 0; _round = 0;
@@ -53,18 +57,31 @@ public:
if (_reading != _buttonState) if (_reading != _buttonState)
{ {
_buttonState = _reading; _buttonState = _reading;
_count++; CNT++;
} }
if (_count == 1) if (CNT == 1)
{ {
timing = millis(); timing = millis();
} }
if (millis() - timing > _int * 1000 && _count > 1) if (!_timeORcount)
{ { // работаем по времени
timing = millis(); if (millis() - timing > _int * 1000 && CNT > 1)
value.valD = _count; {
regEvent(value.valD, F("Impulse")); timing = millis();
_count = 0; 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, "pin": 16,
"pinMode": "INPUT", "pinMode": "INPUT",
"debounceDelay": 3, "debounceDelay": 3,
"multiply": 1 "multiply": 1,
"count": 0,
"timeORcount":0
} }
], ],
"about": { "about": {
@@ -24,7 +26,7 @@
"authorGit": "https://github.com/avaksru", "authorGit": "https://github.com/avaksru",
"specialThanks": "", "specialThanks": "",
"moduleName": "Impulse", "moduleName": "Impulse",
"moduleVersion": "2.0", "moduleVersion": "3.0",
"usedRam": { "usedRam": {
"esp32_4mb": 15, "esp32_4mb": 15,
"esp8266_4mb": 15 "esp8266_4mb": 15
@@ -35,7 +37,9 @@
"int": "Период сбора импульсов в секундах", "int": "Период сбора импульсов в секундах",
"pin": "Укажите GPIO номер пина для чтения импульсов", "pin": "Укажите GPIO номер пина для чтения импульсов",
"pinMode": "Может быть INPUT_PULLUP INPUT_PULLDOWN INPUT", "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, "defActive": true,