mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-28 15:12:19 +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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user