Files
IoTManager/src/modules/exec/AnalogBtn/AnalogBtn.cpp

55 lines
1.3 KiB
C++
Raw Normal View History

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