diff --git a/src/modules/exec/IoTServo/IoTServo.cpp b/src/modules/exec/IoTServo/IoTServo.cpp index 3cd672cf..adc894c1 100644 --- a/src/modules/exec/IoTServo/IoTServo.cpp +++ b/src/modules/exec/IoTServo/IoTServo.cpp @@ -9,37 +9,42 @@ extern IoTGpio IoTgpio; class IoTServo : public IoTItem { private: Servo servObj; - int _apin, _oldValue; - int _locmap1, _locmap2, _locmap3, _locmap4; + // int _apin, _oldValue; + int _oldValue; + // int _locmap1, _locmap2, _locmap3, _locmap4; public: IoTServo(String parameters): IoTItem(parameters) { - int pin; + int pin, minAngle, maxAngle, minPulseWidth, maxPulseWidth; jsonRead(parameters, "pin", pin); - servObj.attach(pin); + jsonRead(parameters, "minAngle", minAngle); + jsonRead(parameters, "maxAngle", maxAngle); + jsonRead(parameters, "minPulseWidth", minPulseWidth); + jsonRead(parameters, "maxPulseWidth", maxPulseWidth); + servObj.attach(pin, -1, minAngle, maxAngle, minPulseWidth, maxPulseWidth); - jsonRead(parameters, "apin", _apin); - if (_apin >= 0) IoTgpio.pinMode(_apin, INPUT); + // jsonRead(parameters, "apin", _apin); + // if (_apin >= 0) IoTgpio.pinMode(_apin, INPUT); - String map; - jsonRead(parameters, F("amap"), map, false); - if (map != "") { - _locmap1 = selectFromMarkerToMarker(map, ",", 0).toInt(); - _locmap2 = selectFromMarkerToMarker(map, ",", 1).toInt(); - _locmap3 = selectFromMarkerToMarker(map, ",", 2).toInt(); - _locmap4 = selectFromMarkerToMarker(map, ",", 3).toInt(); - } + // String map; + // jsonRead(parameters, F("amap"), map, false); + // if (map != "") { + // _locmap1 = selectFromMarkerToMarker(map, ",", 0).toInt(); + // _locmap2 = selectFromMarkerToMarker(map, ",", 1).toInt(); + // _locmap3 = selectFromMarkerToMarker(map, ",", 2).toInt(); + // _locmap4 = selectFromMarkerToMarker(map, ",", 3).toInt(); + // } } - void doByInterval() { - if (_apin >= 0) { - value.valD = map(IoTgpio.analogRead(_apin), _locmap1, _locmap2, _locmap3, _locmap4); - if (abs(_oldValue - value.valD) > 5) { - _oldValue = value.valD; - servObj.write(_oldValue); - } - } - } + // void doByInterval() { + // if (_apin >= 0) { + // value.valD = map(IoTgpio.analogRead(_apin), _locmap1, _locmap2, _locmap3, _locmap4); + // if (abs(_oldValue - value.valD) > 5) { + // _oldValue = value.valD; + // servObj.write(_oldValue); + // } + // } + // } IoTValue execute(String command, std::vector ¶m) { if (command == "rotate") { diff --git a/src/modules/exec/IoTServo/modinfo.json b/src/modules/exec/IoTServo/modinfo.json index 73f8e61e..09388af4 100644 --- a/src/modules/exec/IoTServo/modinfo.json +++ b/src/modules/exec/IoTServo/modinfo.json @@ -10,10 +10,12 @@ "widget": "rangeServo", "page": "servo", "descr": "угол", - "int": 1, "pin": 12, - "apin": -1, - "amap": "0, 4096, 0, 180" + "minAngle": 0, + "maxAngle": 180, + "minPulseWidth": 544, + "maxPulseWidth": 2400, + "trackingID": "" } ], "about": { @@ -30,10 +32,12 @@ "title": "Сервопривод", "moduleDesc": "Предназначен для управления сервоприводом по уровню аналогово сигнала.", "propInfo": { - "int": "Пауза в секундах между опросами аналогового входа. Если 0, то читаем постоянно", "pin": "Пин, к которому подключен сервопривод", - "apin": "Номер GPIO аналогового пина. Если -1, то функция отключена.", - "amap": "Настройки преобразования значений аналога в нужный диапазон сервы, имеет смысл, если аналог включен." + "minAngle": "Минимальный угол поворота", + "maxAngle": "Максимальный угол поворота", + "minPulseWidth": "Минимальная длина импульса", + "maxPulseWidth": "Максимальная длина импульса", + "trackingID": "Идентификатор отслеживания значения другого элемента конфигурации, например, чтение аналога" }, "retInfo": "Содержит текущее значение поворота", "funcInfo": [