Новый модуль AnalogBtn для распознавания аналоговых кнопок

по уровню аналогового сигнала
This commit is contained in:
2024-01-05 22:00:28 +05:00
parent e7e900eb4c
commit d442588ac4
2 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
#include "Global.h"
#include "classes/IoTItem.h"
extern IoTGpio IoTgpio;
class AnalogBtn : public IoTItem {
private:
int _pin, _aValue, _delta;
int _oldVal, _newVal;
public:
AnalogBtn(String parameters) : IoTItem(parameters) {
_pin = 0;
_aValue = 0;
_delta = 50;
jsonRead(parameters, "pin", _pin);
jsonRead(parameters, "aValue", _aValue);
jsonRead(parameters, "delta", _delta);
_round = 0;
setInterval(-100);
}
void doByInterval() {
_newVal = IoTgpio.analogRead(_pin);
if (_aValue == -1 && _oldVal != _newVal) {
_oldVal = _newVal;
SerialPrint("i", "AnalogBtn", (String)_newVal);
return;
}
if ((_newVal > _aValue - _delta) && (_newVal < _aValue + _delta)) {
if (value.valD == 0) {
value.valD = 1;
regEvent(value.valD, "AnalogBtn");
}
} else {
if (value.valD == 1) {
value.valD = 0;
regEvent(value.valD, "AnalogBtn");
}
}
}
~AnalogBtn() {};
};
void* getAPI_AnalogBtn(String subtype, String param) {
if (subtype == F("AnalogBtn")) {
return new AnalogBtn(param);
} else {
return nullptr;
}
}

View File

@@ -0,0 +1,43 @@
{
"menuSection": "executive_devices",
"configItem": [
{
"global": 0,
"name": "Аналоговая кнопка",
"type": "Reading",
"subtype": "AnalogBtn",
"id": "abtn",
"widget": "toggle",
"page": "Кнопки",
"descr": "Освещение",
"pin": 34,
"aValue": -1,
"delta": 50
}
],
"about": {
"authorName": "Ilya Belyakov",
"authorContact": "https://t.me/Biveraxe",
"authorGit": "https://github.com/biveraxe",
"exampleURL": "https://iotmanager.org/wiki",
"specialThanks": "",
"moduleName": "AnalogBtn",
"moduleVersion": "1.0",
"usedRam": {
"esp32_4mb": 15,
"esp8266_4mb": 15
},
"title": "Аналоговая кнопка",
"moduleDesc": "Позволяет получить состояние кнопки на аналоговом пине.",
"propInfo": {
"pin": "Аналоговый GPIO номер, к которому подключена кнопка.",
"aValue": "Значение кнопки в диапазоне от 0 до 1023 (8266) или от 0 до 4095 (esp32). Если =-1 то включается режим отладки и в консоль отправляются значения нажимаемой кнопки.",
"delta": "Погрешность срабатывания кнопки в диапазоне +-delta."
}
},
"defActive": true,
"usedLibs": {
"esp32*": [],
"esp82*": []
}
}