mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
Новый модуль AnalogBtn для распознавания аналоговых кнопок
по уровню аналогового сигнала
This commit is contained in:
54
src/modules/exec/AnalogBtn/AnalogBtn.cpp
Normal file
54
src/modules/exec/AnalogBtn/AnalogBtn.cpp
Normal 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;
|
||||
}
|
||||
}
|
||||
43
src/modules/exec/AnalogBtn/modinfo.json
Normal file
43
src/modules/exec/AnalogBtn/modinfo.json
Normal 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*": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user