From cc28b45851486ee72822b8dcef45ff5fdffefeb2 Mon Sep 17 00:00:00 2001 From: biver Date: Mon, 10 Oct 2022 22:54:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=B5=D0=BB=D0=B0=D0=B5=D0=BC=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B8=D1=81=D0=BA=20=D0=B0=D0=B4=D1=80=D0=B5=D1=81=D0=B0?= =?UTF-8?q?=20I2C=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D1=83=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=BD=D1=8B=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/display/Lcd2004/Lcd2004.cpp | 11 +++++++---- src/modules/exec/Mcp23017/Mcp23017.cpp | 17 ++++++++++------- src/modules/exec/Pcf8574/Pcf8574.cpp | 15 ++++++++++----- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/modules/display/Lcd2004/Lcd2004.cpp b/src/modules/display/Lcd2004/Lcd2004.cpp index 74f3080d..968bed0b 100644 --- a/src/modules/display/Lcd2004/Lcd2004.cpp +++ b/src/modules/display/Lcd2004/Lcd2004.cpp @@ -15,16 +15,17 @@ class Lcd2004 : public IoTItem { String _id2show; String _descr; int _prevStrSize; + String _addr; bool _isShow = true; // экран показывает public: Lcd2004(String parameters) : IoTItem(parameters) { - String addr, size, xy; + String size, xy; _prevStrSize = 0; - jsonRead(parameters, "addr", addr); - if (addr == "") { + jsonRead(parameters, "addr", _addr); + if (_addr == "") { scanI2C(); return; } @@ -33,7 +34,7 @@ class Lcd2004 : public IoTItem { int w = selectFromMarkerToMarker(size, ",", 0).toInt(); //количество столбцов int h = selectFromMarkerToMarker(size, ",", 1).toInt(); //количество строк if (LCDI2C == nullptr) { //инициализации экрана еще не было - LCDI2C = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h); + LCDI2C = new LiquidCrystal_I2C(hexStringToUint8(_addr), w, h); if (LCDI2C != nullptr) { LCDI2C->init(); } @@ -62,6 +63,8 @@ class Lcd2004 : public IoTItem { //LCDI2C->print("Helloy,Manager 404 !"); //Serial.printf("ffff %s\n", _id2show); _prevStrSize = tmpStr.length(); + } else { + scanI2C(); } } diff --git a/src/modules/exec/Mcp23017/Mcp23017.cpp b/src/modules/exec/Mcp23017/Mcp23017.cpp index 657a3fde..b5fc7f06 100644 --- a/src/modules/exec/Mcp23017/Mcp23017.cpp +++ b/src/modules/exec/Mcp23017/Mcp23017.cpp @@ -3,8 +3,6 @@ #include "classes/IoTGpio.h" #include -void scanI2C(); - class Mcp23017Driver : public IoTGpio { private: Adafruit_MCP23X17 _mcp; @@ -39,14 +37,14 @@ class Mcp23017Driver : public IoTGpio { class Mcp23017 : public IoTItem { private: Mcp23017Driver* _driver; + String _addr; public: Mcp23017(String parameters) : IoTItem(parameters) { _driver = nullptr; - String addr; - jsonRead(parameters, "addr", addr); - if (addr == "") { + jsonRead(parameters, "addr", _addr); + if (_addr == "") { scanI2C(); return; } @@ -58,10 +56,15 @@ class Mcp23017 : public IoTItem { return; } - _driver = new Mcp23017Driver(index, addr); + _driver = new Mcp23017Driver(index, _addr); } - void doByInterval() {} + void doByInterval() { + if (_addr == "") { + scanI2C(); + return; + } + } //возвращает ссылку на экземпляр класса Mcp23017Driver IoTGpio* getGpioDriver() { diff --git a/src/modules/exec/Pcf8574/Pcf8574.cpp b/src/modules/exec/Pcf8574/Pcf8574.cpp index d5403752..962feea5 100644 --- a/src/modules/exec/Pcf8574/Pcf8574.cpp +++ b/src/modules/exec/Pcf8574/Pcf8574.cpp @@ -93,14 +93,14 @@ class Pcf8574Driver : public IoTGpio { class Pcf8574 : public IoTItem { private: Pcf8574Driver* _driver; + String _addr; public: Pcf8574(String parameters) : IoTItem(parameters) { _driver = nullptr; - String addr; - jsonRead(parameters, "addr", addr); - if (addr == "") { + jsonRead(parameters, "addr", _addr); + if (_addr == "") { scanI2C(); return; } @@ -112,10 +112,15 @@ class Pcf8574 : public IoTItem { return; } - _driver = new Pcf8574Driver(index, addr); + _driver = new Pcf8574Driver(index, _addr); } - void doByInterval() {} + void doByInterval() { + if (_addr == "") { + scanI2C(); + return; + } + } //возвращает ссылку на экземпляр класса Pcf8574Driver IoTGpio* getGpioDriver() {