mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Добавляем в сценарии digitalWrite(pin), digitalRead(pin), digitalInvert(pin)
This commit is contained in:
@@ -11,6 +11,7 @@ class IoTGpio {
|
|||||||
virtual int digitalRead(uint8_t pin);
|
virtual int digitalRead(uint8_t pin);
|
||||||
virtual int analogRead(uint8_t pin);
|
virtual int analogRead(uint8_t pin);
|
||||||
virtual void analogWrite(uint8_t pin, int val);
|
virtual void analogWrite(uint8_t pin, int val);
|
||||||
|
virtual void digitalInvert(uint8_t pin);
|
||||||
|
|
||||||
int index;
|
int index;
|
||||||
void regDriver(IoTGpio* newDriver);
|
void regDriver(IoTGpio* newDriver);
|
||||||
|
|||||||
@@ -48,6 +48,12 @@ void IoTGpio::analogWrite(uint8_t pin, int val) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IoTGpio::digitalInvert(uint8_t pin) {
|
||||||
|
int pinH = pin/100;
|
||||||
|
if (_drivers[pinH]) _drivers[pinH]->digitalInvert(pin - pinH*100);
|
||||||
|
else ::digitalWrite(pin, 1 - ::digitalRead(pin));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void IoTGpio::regDriver(IoTGpio* newDriver) {
|
void IoTGpio::regDriver(IoTGpio* newDriver) {
|
||||||
_drivers[newDriver->index] = newDriver;
|
_drivers[newDriver->index] = newDriver;
|
||||||
|
|||||||
@@ -36,6 +36,10 @@ class Mcp23017 : public IoTItem, IoTGpio {
|
|||||||
return mcp.digitalRead(pin);
|
return mcp.digitalRead(pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void digitalInvert(uint8_t pin) {
|
||||||
|
mcp.digitalWrite(pin, 1 - mcp.digitalRead(pin));
|
||||||
|
}
|
||||||
|
|
||||||
~Mcp23017() {};
|
~Mcp23017() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,25 @@ class SysExt : public IoTItem {
|
|||||||
|
|
||||||
if (command == "reboot") { // выполняем код при вызове спец команды из сценария: ID.reboot();
|
if (command == "reboot") { // выполняем код при вызове спец команды из сценария: ID.reboot();
|
||||||
ESP.restart();
|
ESP.restart();
|
||||||
|
} else if (command == "digitalRead") {
|
||||||
|
if (param.size()) {
|
||||||
|
IoTgpio.pinMode(param[0].valD, INPUT);
|
||||||
|
value.valD = IoTgpio.digitalRead(param[0].valD);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
} else if (command == "digitalWrite") {
|
||||||
|
if (param.size() == 2) {
|
||||||
|
IoTgpio.pinMode(param[0].valD, OUTPUT);
|
||||||
|
IoTgpio.digitalWrite(param[0].valD, param[1].valD);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
} else if (command == "digitalInvert") {
|
||||||
|
if (param.size()) {
|
||||||
|
IoTgpio.pinMode(param[0].valD, OUTPUT);
|
||||||
|
IoTgpio.digitalInvert(param[0].valD);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {}; // команда поддерживает возвращаемое значения. Т.е. по итогу выполнения команды или общения с внешней системой, можно вернуть значение в сценарий для дальнейшей обработки
|
return {}; // команда поддерживает возвращаемое значения. Т.е. по итогу выполнения команды или общения с внешней системой, можно вернуть значение в сценарий для дальнейшей обработки
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user