From 2b1cac904b91728ec416594ef75d161b728c2e60 Mon Sep 17 00:00:00 2001 From: biver Date: Wed, 12 Jan 2022 18:02:43 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D1=83=D0=BB=D1=8F=20Display=20TM1637=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=83=20=D0=BD=D0=B0=20=D0=B1?= =?UTF-8?q?=D0=B0=D0=B7=D0=B5=20=D1=83=D0=B6=D0=B5=20=D1=81=D1=83=D1=89?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B5=D0=B3=D0=BE=20?= =?UTF-8?q?LCD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Consts.h | 1 + include/items/vSensorTM1637.h | 40 +++++++++++ platformio.ini | 5 ++ src/items/vSensorTM1637.cpp | 128 ++++++++++++++++++++++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 include/items/vSensorTM1637.h create mode 100644 src/items/vSensorTM1637.cpp diff --git a/include/Consts.h b/include/Consts.h index 02df2cb4..86e072da 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -88,6 +88,7 @@ #define EnableTelegram #define EnableUart #define EnableSensorLCD2004 +#define EnableSensorTM1637 #endif #ifdef GATE_MODE diff --git a/include/items/vSensorTM1637.h b/include/items/vSensorTM1637.h new file mode 100644 index 00000000..a60ca2d5 --- /dev/null +++ b/include/items/vSensorTM1637.h @@ -0,0 +1,40 @@ +#ifdef EnableSensorTM1637 +#pragma once +#include +#include +#include "Global.h" +#include "LiquidCrystal_I2C.h" + + +class SensorTM1637; + +typedef std::vector MySensorTM1637Vector; + +class SensorTM1637 { + public: + SensorTM1637(String key, unsigned long interval, unsigned int x, unsigned int y, String val, String descr); + ~SensorTM1637(); + + void loop(); + void writeTM1637(); + void execute(String command); + String _key; + void printBlankStr(int strSize); + + private: + unsigned long currentMillis; + unsigned long prevMillis; + unsigned long difference; + + unsigned long _interval; + unsigned int _x; + unsigned int _y; + String _val; + String _descr; + int _prevStrSize; +}; + +extern MySensorTM1637Vector* mySensorTM16372; + +extern void TM1637(); +#endif diff --git a/platformio.ini b/platformio.ini index bc2ece4d..98a65ade 100644 --- a/platformio.ini +++ b/platformio.ini @@ -45,6 +45,7 @@ lib_deps = Adafruit AHTX0 BH1750 marcoschwartz/LiquidCrystal_I2C@^1.1.4 + smougenot/TM1637@0.0.0-alpha+sha.9486982048 monitor_filters = esp8266_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -73,6 +74,7 @@ lib_deps = Adafruit AHTX0 BH1750 marcoschwartz/LiquidCrystal_I2C@^1.1.4 + smougenot/TM1637@0.0.0-alpha+sha.9486982048 monitor_filters = esp8266_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -91,6 +93,7 @@ lib_deps = CTBot @2.1.6 MySensors @2.3.2 marcoschwartz/LiquidCrystal_I2C@^1.1.4 + smougenot/TM1637@0.0.0-alpha+sha.9486982048 monitor_filters = esp8266_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -120,6 +123,7 @@ lib_deps = Adafruit AHTX0 BH1750 marcoschwartz/LiquidCrystal_I2C@^1.1.4 + smougenot/TM1637@0.0.0-alpha+sha.9486982048 monitor_filters = esp32_exception_decoder upload_speed = 921600 monitor_speed = 115200 @@ -141,6 +145,7 @@ lib_deps = MySensors @2.3.2 fmalpartida/LiquidCrystal@^1.5.0 marcoschwartz/LiquidCrystal_I2C@^1.1.4 + smougenot/TM1637@0.0.0-alpha+sha.9486982048 monitor_filters = esp32_exception_decoder upload_speed = 921600 monitor_speed = 115200 diff --git a/src/items/vSensorTM1637.cpp b/src/items/vSensorTM1637.cpp new file mode 100644 index 00000000..48dfaaeb --- /dev/null +++ b/src/items/vSensorTM1637.cpp @@ -0,0 +1,128 @@ +#include "Consts.h" +#ifdef EnableSensorTM1637 +#include "items/vSensorTM1637.h" +#include "BufferExecute.h" +#include "Class/LineParsing.h" +#include "Global.h" +#include "Utils/StringUtils.h" +#include + +#include + +LiquidCrystal_I2C *LCDI2C; + +SensorTM1637::SensorTM1637(String key, unsigned long interval, unsigned int x, unsigned int y, String val, String descr) { + _key = key; + _interval = interval * 1000; + _x = x; + _y = y; + _val = val; + _descr = descr; + _prevStrSize = 0; +} + +SensorTM1637::~SensorTM1637() {} + +//печать пустой строки нужной длинны для затирания предыдущего значения на экране +void SensorTM1637::printBlankStr(int strSize){ + String tmpStr = ""; + for(int i=0; isetCursor(_x, _y); + LCDI2C->print(tmpStr); +} + +void SensorTM1637::execute(String command) { + if (command == "noBacklight") LCDI2C->noBacklight(); + else if (command == "backlight") LCDI2C->backlight(); + else if (command == "noDisplay") LCDI2C->noDisplay(); + else if (command == "display") LCDI2C->display(); + else if (command == "x") { + printBlankStr(_prevStrSize); + String par = sCmd.next(); + _x = par.toInt(); + } + else if (command == "y") { + printBlankStr(_prevStrSize); + String par = sCmd.next(); + _y = par.toInt(); + } + else if (command == "descr") { + printBlankStr(_prevStrSize); + String par = sCmd.next(); + _descr = par; + } + else { //не команда, значит данные + _val = command; + } + + writeTM1637(); +} + +void SensorTM1637::loop() { + currentMillis = millis(); + difference = currentMillis - prevMillis; + if (difference >= _interval) { + prevMillis = millis(); + writeTM1637(); + } +} + +void SensorTM1637::writeTM1637() { + if (LCDI2C != nullptr) { + printBlankStr(_prevStrSize); + + String tmpStr = getValue(_val); + if (tmpStr == "no value") tmpStr = _val; + if (_descr != "none") tmpStr = _descr + " " + tmpStr; + LCDI2C->setCursor(_x, _y); + LCDI2C->print(tmpStr); + + _prevStrSize = tmpStr.length(); + } +} + +MySensorTM1637Vector* mySensorTM16372 = nullptr; + +void TM1637Execute() { + String key = sCmd.order(); + String command = sCmd.next(); + + for (unsigned int i = 0; i < mySensorTM16372->size(); i++) { + if (mySensorTM16372->at(i)._key == key) mySensorTM16372->at(i).execute(command); + } +} + +void TM1637() { + myLineParsing.update(); + String key = myLineParsing.gkey(); + String addr = myLineParsing.gaddr(); + String interval = myLineParsing.gint(); + String c = myLineParsing.gc(); + String k = myLineParsing.gk(); + String val = myLineParsing.gval(); + String descr = myLineParsing.gdescr(); + myLineParsing.clear(); + + int x = selectFromMarkerToMarker(c, ",", 0).toInt(); + int y = selectFromMarkerToMarker(c, ",", 1).toInt(); + int w = selectFromMarkerToMarker(k, ",", 0).toInt(); //количество столбцов + int h = selectFromMarkerToMarker(k, ",", 1).toInt(); //количество строк + + if (LCDI2C == nullptr) { //инициализации экрана еще не было + LCDI2C = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h);//hexStringToUint8(addr), w, h); + if(LCDI2C != nullptr) { + LCDI2C->init(); + LCDI2C->backlight(); + } + } + + + static bool firstTime = true; + if (firstTime) mySensorTM16372 = new MySensorTM1637Vector(); + firstTime = false; + mySensorTM16372->push_back(SensorTM1637(key, interval.toInt(), x, y, val, descr)); + + sCmd.addCommand(key.c_str(), TM1637Execute); +} + +#endif From 2d8de37ee78460c96519856a2f08b44d0d6507da Mon Sep 17 00:00:00 2001 From: biver Date: Wed, 12 Jan 2022 18:24:46 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20FS=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BF=D1=83=D0=BD=D0=BA=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E=20=D0=B4=D0=BB=D1=8F=20TM1637?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_esp/items/items.txt | 1 + data_esp/set.device.json.gz | Bin 3151 -> 3173 bytes src/items/vSensorTM1637.cpp | 30 +++++++++++++++--------------- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/data_esp/items/items.txt b/data_esp/items/items.txt index 4da9efd9..1fb5d5ea 100644 --- a/data_esp/items/items.txt +++ b/data_esp/items/items.txt @@ -39,4 +39,5 @@ 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_temp];addr[0x76] 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_hum];addr[0x76]* 0;LCD2004;lcdid;anydata;Вывод;IP;1;addr[0x27];k[16,2];int[10];c[0,0];val[ip]* +0;disp1637;dispid;anydata;Вывод;f;1;pin[12,13];int[10];index[0];c[4];k[0];val[1234]* 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[type1];addr[0x76]* \ No newline at end of file diff --git a/data_esp/set.device.json.gz b/data_esp/set.device.json.gz index 329723f7f2fc2e79fd4b93bf63d76e7e30fdb397..25e68a2893b48055375519681ceb615939adbc88 100644 GIT binary patch delta 3160 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 diff --git a/src/items/vSensorTM1637.cpp b/src/items/vSensorTM1637.cpp index 48dfaaeb..33c13215 100644 --- a/src/items/vSensorTM1637.cpp +++ b/src/items/vSensorTM1637.cpp @@ -9,7 +9,7 @@ #include -LiquidCrystal_I2C *LCDI2C; +LiquidCrystal_I2C *LCDI2C2; SensorTM1637::SensorTM1637(String key, unsigned long interval, unsigned int x, unsigned int y, String val, String descr) { _key = key; @@ -27,15 +27,15 @@ SensorTM1637::~SensorTM1637() {} void SensorTM1637::printBlankStr(int strSize){ String tmpStr = ""; for(int i=0; isetCursor(_x, _y); - LCDI2C->print(tmpStr); + LCDI2C2->setCursor(_x, _y); + LCDI2C2->print(tmpStr); } void SensorTM1637::execute(String command) { - if (command == "noBacklight") LCDI2C->noBacklight(); - else if (command == "backlight") LCDI2C->backlight(); - else if (command == "noDisplay") LCDI2C->noDisplay(); - else if (command == "display") LCDI2C->display(); + if (command == "noBacklight") LCDI2C2->noBacklight(); + else if (command == "backlight") LCDI2C2->backlight(); + else if (command == "noDisplay") LCDI2C2->noDisplay(); + else if (command == "display") LCDI2C2->display(); else if (command == "x") { printBlankStr(_prevStrSize); String par = sCmd.next(); @@ -68,14 +68,14 @@ void SensorTM1637::loop() { } void SensorTM1637::writeTM1637() { - if (LCDI2C != nullptr) { + if (LCDI2C2 != nullptr) { printBlankStr(_prevStrSize); String tmpStr = getValue(_val); if (tmpStr == "no value") tmpStr = _val; if (_descr != "none") tmpStr = _descr + " " + tmpStr; - LCDI2C->setCursor(_x, _y); - LCDI2C->print(tmpStr); + LCDI2C2->setCursor(_x, _y); + LCDI2C2->print(tmpStr); _prevStrSize = tmpStr.length(); } @@ -108,11 +108,11 @@ void TM1637() { int w = selectFromMarkerToMarker(k, ",", 0).toInt(); //количество столбцов int h = selectFromMarkerToMarker(k, ",", 1).toInt(); //количество строк - if (LCDI2C == nullptr) { //инициализации экрана еще не было - LCDI2C = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h);//hexStringToUint8(addr), w, h); - if(LCDI2C != nullptr) { - LCDI2C->init(); - LCDI2C->backlight(); + if (LCDI2C2 == nullptr) { //инициализации экрана еще не было + LCDI2C2 = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h);//hexStringToUint8(addr), w, h); + if(LCDI2C2 != nullptr) { + LCDI2C2->init(); + LCDI2C2->backlight(); } } From 0a2c86ccbf9ddfd4017674dcebc4245c0253add5 Mon Sep 17 00:00:00 2001 From: biver Date: Wed, 12 Jan 2022 18:58:41 +0300 Subject: [PATCH 3/6] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20FS=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BF=D1=83=D0=BD=D0=BA=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8E=20=D0=B4=D0=BB=D1=8F=20TM1637?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_esp/items/items.txt | 4 ++-- data_esp/set.device.json.gz | Bin 3173 -> 3191 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data_esp/items/items.txt b/data_esp/items/items.txt index 1fb5d5ea..3d52f4ae 100644 --- a/data_esp/items/items.txt +++ b/data_esp/items/items.txt @@ -38,6 +38,6 @@ 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[HDC1080_hum];addr[0x76]* 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_temp];addr[0x76] 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_hum];addr[0x76]* -0;LCD2004;lcdid;anydata;Вывод;IP;1;addr[0x27];k[16,2];int[10];c[0,0];val[ip]* -0;disp1637;dispid;anydata;Вывод;f;1;pin[12,13];int[10];index[0];c[4];k[0];val[1234]* +0;LCD2004;lcdid;na;na;IP;1;addr[0x27];k[16,2];int[10];c[0,0];val[ip]* +0;TM1637;dispid;na;na;f;1;pin[12,13];int[10];index[0];c[4];k[0];val[1234]* 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[type1];addr[0x76]* \ No newline at end of file diff --git a/data_esp/set.device.json.gz b/data_esp/set.device.json.gz index 25e68a2893b48055375519681ceb615939adbc88..d9fbdf01cce43e49b47f16210777870495fb23bd 100644 GIT binary patch delta 2969 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 PD=WVMjkwGMLNfpWoj{}5 delta 2943 zcmV-_3xM?Z808p{A_6bakt8~Qw&k1h7s!9qnK`6H(XvD*_SV>K>X;&_nK|E?`Q}1q z`Qwim{MVB;^m#RB^`zMxKSO5+`00eD*rj6Pfo14Du{M{DqOBVG+1E97L1}YUlk^<@ zl`u>EGQWB+<{PC+7McXsX>qF%H|FQTlDNRU&qA^%*0kSNbi395<>n!O-DE#5Dkv^L z6f}fiQf-Z{Eida*L0MTjbw|S(NmEQaE-Uj=Nwa&Jcdf*_Yt~f#VJF?6mFyWw)o)9= zb|y$!#2N1#INQ98tuy$EXEY=GkdEHZ)Vz7#FASc&vgs-2Zn$giy1VMsodY~_Do#1g zmY1`6wKzQmtGz&Nx0zFacB-Ij*Ih#$YVktlJ3A=aId->ExUCix-B`R(4PO*dDoQWW z(FL0ixU9NsPR-qB&O6)^_nA|J4LNjbsB>O53yYGe++R>k3q0=fw7XAWqYj)SaEb~# z2BY)n9SHAMnx&G17peO-`CkR3pSaK2AJv;GX>{H?Ct%1C_ee{B&FPYMv5S5|iz>rU z-8lr%K^wRaeB^+eit^cGTd^)y=?|b~AL9&GS95kd@3lvJmrN42vSfE6KrlsD^_A@ASTLV7NE$;(D5&OvJe^empv0>19*BOte@90P?LNj$?~+V6vhQqDkPkLLdexY zDoBLPM}b#{pgV$?|Hl0qhya-vl;d5;-NlM1Ry?Oz*5|H&G5S#PDHm3K(BEBM3e}}r z)q#*22w4ZUz?ANDWK2-k2fsaL0akIhfpCy+_(e{2V1c_4V@?(AWCZj(5Q{SQiH(V$ z@KOb~!u<-j2EL9vw(V|4Fn18m9SouK1h*DMJjEgaPr2JM=02s=!s!rB*NK+vV76xg z2d@mvLKCZh@Vz5I_9>XS3rk;XBuucniX86LaFM5L8+Rju-9u>iP{R2)A`4cmqy4yJ z$Dm{b0Rj^}B#+S?I=Kx9p{>QmLU$FzsA4$bynvOE@Cqf`Dk6kpp76!ETka+UxKP8Zjq&Z+C2083 z9(-e$Z)dErMt7^b1vk)w8wuwhn5F@R8hUTpD-1|A*>n){qVO%Am2mGSw>|=CB#AYW zt-5&;1b&F*g{L=g9Za@_>lrZ_K`Q4WAtV)Lt%cm)b2je5`{=!}3w}xV+q=Jy-@TI@ zoQ<)6Ta$DI2Y-fxo5`UFRuFXwVx+ZUG*z$+gIzrFg0se^Zp{ip1Wm+RLh8dbiDC?Y zrBd{35Z3zXjF?Ko**mvplc@-15E}`DQOt<7GXnpwa$5HtnPm!!csNyJwIKC zFW>&l=QHsnxFM!BV)e%IcuGIy{@W@j0t*YoV!}vhDTka2{Z^GxH0&eMKwy_yHfvpv zj z#He-Bwu`(UK`gPK2<*2523FA@$&Dz@dcvDd%9?OvBIM=ChL;MxlUOO1B-4(uoMOjm zk9a?|Mjj0=j_Zc6vXWekU?8vQfEd4jrv<*{ML@7!s|B(k7Dvuog5(L`8b2oZdpvrQr5`#47-6SXUf>dT+|V z3wdV=vg+&?;u3=k(WPlRNF$5EW+MjNGPY8s5o zYEHG8*PF808DTgz5}~W&Oh+YuCOBk>slCj=>9owkEs_@{*l=Mhu*Zw!YC{nBYlv%J zv;`oeSU;g=XSE-C{Z=zqE~)t!uVVAhTLc8;Vq5>)rUFNe=Km*BdF;7<8FiuGP^viL z^GCmoXV{|GX|u6O|Jrv4=-!d>Xw%_`xUFr1GKyKQZrrV`R%b#;t=_ zV(K{dx(5%kvTte>vzjA?Iu2flVvmT4PZz+aOoB@M;(_v~20M)=zY&U4^IE7iL$wS@;Hc6cMWsIn*a<5<^k*jSh6j8z zHMUu%Kj}Fl4&vCbW@^Y$>w(%2clw0a{yY;?rEm}~ct60H#<0QN zByby*Q8m~BRFPJjHDVOOZD$A}IgEzy-dKsob~Vn@6{4lq)t6~jU#4Xf27F5}iuX7y zk%*}=V0hiGNAOhB%n;STqh13VG${JNX^n(} zHm_tKW{mcwRo*UWZ7;N&)bmuOXiC;jFRC*11lFl%+}#EIe_UuifA4g{mu%WiD}iqe zB-(9iqbLBZ?R;8DCVw;9=>a(gfF&&`Sb14j@M(GHHvu3{t29(>q=hZ7gW*&aevWZ^ zz8S#cfwUl5SyL^O-v~7_ZI8UE%#ZgDd;+&6WMx6kD!ptJmd;>nlKrDAmyh{*A%x7@ z&0_$DPc`ko6fBH4tcdf*H&!6%J#J z)M3BR$M0A~)%m<(&mX-7Yo4*pg!9UI;rz?_(fQW-!TAoV_x~{X>s#k<&iC-~XXo|U zKxQJr;Fyo1sx<+w-nbmzS|-g=PAqi8dn$y5Gl`CMYM3 zXK)_Y`+tN8KIMDXtTT4`wQwy}8yhG>TZ8Tbzrf8V&P#S;hp>CqQlHk&o6pb4&yD`l z$|`!tmrGjf+fcb&>zXn^{P^4){@c+d4FWve<*ceRUj)Kc>KXf*`JzVfNo*; zNwZ)INPK>9+;$>(y1xu#=-C0D?Os~3GrB4^ss?w0O)SE z0Wb=9)4GSK)?@2Zo!p&=c?7gH?Za*M^B2-8N36Hrx7{yBQ@` z5r2Uz7^__YdqE^kBOjiY0}lwi$DkE@7*O?}!gy0s|3f!$vYI04nvwg}E72e6QIhu} zM>rdoJ1v8%>w=`0B<)vU#dkPFM#J%ulJ^b@J^~25vB_VDsPIt&%?dCMyy1C=b>?lm zXr%`Ra;lv#WuOTx3``rdGmDJ8))TQGKXh#W$c+XYy*{F*oPz%wB}% z3-L(Lt4oSJinaa_WO+@Qx9Naq{=sCR{-B7vY{eWs8=$-@%Zh&C z@eCy|AJ}^F-14?5l-f}qt_7W+lGUjjOvNf1xXtipLdCu=P2rO py79TGJi3Fhb#aLRwCD5+Ne6NXV&MIIl#f4J`2|ud7S$*-007%&n$Z9N From c87854b2ce9b2efe862d318647f4191a5fbb74b0 Mon Sep 17 00:00:00 2001 From: biver Date: Wed, 12 Jan 2022 19:01:15 +0300 Subject: [PATCH 4/6] =?UTF-8?q?=D0=98=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B8?= =?UTF-8?q?=D1=80=D1=83=D0=B5=D0=BC=20=D0=B4=D0=B8=D1=81=D0=BF=D0=BB=D1=8D?= =?UTF-8?q?=D0=B9=20TM1637=20=D0=B2=20=D1=8F=D0=B4=D1=80=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/items/vSensorTM1637.h | 4 +- src/BufferExecute.cpp | 5 ++ src/Init.cpp | 9 +++- src/items/vSensorTM1637.cpp | 92 +++++++++++++++++------------------ src/main.cpp | 9 +++- 5 files changed, 68 insertions(+), 51 deletions(-) diff --git a/include/items/vSensorTM1637.h b/include/items/vSensorTM1637.h index a60ca2d5..70552be2 100644 --- a/include/items/vSensorTM1637.h +++ b/include/items/vSensorTM1637.h @@ -3,7 +3,7 @@ #include #include #include "Global.h" -#include "LiquidCrystal_I2C.h" +#include class SensorTM1637; @@ -34,7 +34,7 @@ class SensorTM1637 { int _prevStrSize; }; -extern MySensorTM1637Vector* mySensorTM16372; +extern MySensorTM1637Vector* mySensorTM1637; extern void TM1637(); #endif diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp index 4c2b483f..74817482 100644 --- a/src/BufferExecute.cpp +++ b/src/BufferExecute.cpp @@ -17,6 +17,7 @@ #include "items/vSensorCcs811.h" #include "items/vSensorDallas.h" #include "items/vSensorLCD2004.h" +#include "items/vSensorTM1637.h" #include "items/vSensorDht.h" #include "items/vSensorNode.h" #include "items/vSensorPzem.h" @@ -110,6 +111,10 @@ void csvCmdExecute(String& cmdStr) { } else if (order == F("LCD2004")) { #ifdef EnableSensorLCD2004 sCmd.addCommand(order.c_str(), lcd2004); +#endif + } else if (order == F("TM1637")) { +#ifdef EnableSensorTM1637 + sCmd.addCommand(order.c_str(), TM1637); #endif } else if (order == F("dht")) { #ifdef EnableSensorDht diff --git a/src/Init.cpp b/src/Init.cpp index 19781682..d55dd099 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -17,6 +17,7 @@ #include "items/vSensorCcs811.h" #include "items/vSensorDallas.h" #include "items/vSensorLCD2004.h" +#include "items/vSensorTM1637.h" #include "items/vSensorDht.h" #include "items/vSensorNode.h" #include "items/vSensorPzem.h" @@ -177,8 +178,12 @@ void clearVectors() { #ifdef EnableSensorLCD2004 if (mySensorLCD20042 != nullptr) { if(LCDI2C != nullptr) LCDI2C->clear(); - mySensorLCD20042->clear(); - + mySensorLCD20042->clear(); + } +#endif +#ifdef EnableSensorTM1637 + if (mySensorTM1637 != nullptr) { + mySensorTM1637->clear(); } #endif #ifdef EnableSensorUltrasonic diff --git a/src/items/vSensorTM1637.cpp b/src/items/vSensorTM1637.cpp index 33c13215..7290836b 100644 --- a/src/items/vSensorTM1637.cpp +++ b/src/items/vSensorTM1637.cpp @@ -9,7 +9,7 @@ #include -LiquidCrystal_I2C *LCDI2C2; +//LiquidCrystal_I2C *LCDI2C2; SensorTM1637::SensorTM1637(String key, unsigned long interval, unsigned int x, unsigned int y, String val, String descr) { _key = key; @@ -27,33 +27,33 @@ SensorTM1637::~SensorTM1637() {} void SensorTM1637::printBlankStr(int strSize){ String tmpStr = ""; for(int i=0; isetCursor(_x, _y); - LCDI2C2->print(tmpStr); + //LCDI2C2->setCursor(_x, _y); + //LCDI2C2->print(tmpStr); } void SensorTM1637::execute(String command) { - if (command == "noBacklight") LCDI2C2->noBacklight(); - else if (command == "backlight") LCDI2C2->backlight(); - else if (command == "noDisplay") LCDI2C2->noDisplay(); - else if (command == "display") LCDI2C2->display(); - else if (command == "x") { - printBlankStr(_prevStrSize); - String par = sCmd.next(); - _x = par.toInt(); - } - else if (command == "y") { - printBlankStr(_prevStrSize); - String par = sCmd.next(); - _y = par.toInt(); - } - else if (command == "descr") { - printBlankStr(_prevStrSize); - String par = sCmd.next(); - _descr = par; - } - else { //не команда, значит данные - _val = command; - } + //if (command == "noBacklight") LCDI2C2->noBacklight(); + //else if (command == "backlight") LCDI2C2->backlight(); + //else if (command == "noDisplay") LCDI2C2->noDisplay(); + //else if (command == "display") LCDI2C2->display(); + //else if (command == "x") { + // printBlankStr(_prevStrSize); + // String par = sCmd.next(); + // _x = par.toInt(); + //} + //else if (command == "y") { + // printBlankStr(_prevStrSize); + // String par = sCmd.next(); + // _y = par.toInt(); + //} + //else if (command == "descr") { + // printBlankStr(_prevStrSize); + // String par = sCmd.next(); + // _descr = par; + //} + //else { //не команда, значит данные + // _val = command; + //} writeTM1637(); } @@ -68,27 +68,27 @@ void SensorTM1637::loop() { } void SensorTM1637::writeTM1637() { - if (LCDI2C2 != nullptr) { - printBlankStr(_prevStrSize); + // if (LCDI2C2 != nullptr) { + // printBlankStr(_prevStrSize); - String tmpStr = getValue(_val); - if (tmpStr == "no value") tmpStr = _val; - if (_descr != "none") tmpStr = _descr + " " + tmpStr; - LCDI2C2->setCursor(_x, _y); - LCDI2C2->print(tmpStr); + // String tmpStr = getValue(_val); + // if (tmpStr == "no value") tmpStr = _val; + // if (_descr != "none") tmpStr = _descr + " " + tmpStr; + // LCDI2C2->setCursor(_x, _y); + // LCDI2C2->print(tmpStr); - _prevStrSize = tmpStr.length(); - } + // _prevStrSize = tmpStr.length(); + // } } -MySensorTM1637Vector* mySensorTM16372 = nullptr; +MySensorTM1637Vector* mySensorTM1637 = nullptr; void TM1637Execute() { String key = sCmd.order(); String command = sCmd.next(); - for (unsigned int i = 0; i < mySensorTM16372->size(); i++) { - if (mySensorTM16372->at(i)._key == key) mySensorTM16372->at(i).execute(command); + for (unsigned int i = 0; i < mySensorTM1637->size(); i++) { + if (mySensorTM1637->at(i)._key == key) mySensorTM1637->at(i).execute(command); } } @@ -108,19 +108,19 @@ void TM1637() { int w = selectFromMarkerToMarker(k, ",", 0).toInt(); //количество столбцов int h = selectFromMarkerToMarker(k, ",", 1).toInt(); //количество строк - if (LCDI2C2 == nullptr) { //инициализации экрана еще не было - LCDI2C2 = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h);//hexStringToUint8(addr), w, h); - if(LCDI2C2 != nullptr) { - LCDI2C2->init(); - LCDI2C2->backlight(); - } - } + // if (LCDI2C2 == nullptr) { //инициализации экрана еще не было + // //LCDI2C2 = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h);//hexStringToUint8(addr), w, h); + // if(LCDI2C2 != nullptr) { + // LCDI2C2->init(); + // LCDI2C2->backlight(); + // } + // } static bool firstTime = true; - if (firstTime) mySensorTM16372 = new MySensorTM1637Vector(); + if (firstTime) mySensorTM1637 = new MySensorTM1637Vector(); firstTime = false; - mySensorTM16372->push_back(SensorTM1637(key, interval.toInt(), x, y, val, descr)); + mySensorTM1637->push_back(SensorTM1637(key, interval.toInt(), x, y, val, descr)); sCmd.addCommand(key.c_str(), TM1637Execute); } diff --git a/src/main.cpp b/src/main.cpp index 274d5e23..c2385e92 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,3 @@ - #include #include "BufferExecute.h" @@ -30,6 +29,7 @@ #include "items/vSensorCcs811.h" #include "items/vSensorDallas.h" #include "items/vSensorLCD2004.h" +#include "items/vSensorTM1637.h" #include "items/vSensorDht.h" #include "items/vSensorNode.h" #include "items/vSensorPzem.h" @@ -161,6 +161,13 @@ void loop() { } } #endif +#ifdef EnableSensorTM1637 + if (mySensorTM1637 != nullptr) { + for (unsigned int i = 0; i < mySensorTM1637->size(); i++) { + mySensorTM1637->at(i).loop(); + } + } +#endif #ifdef EnableSensorUltrasonic if (mySensorUltrasonic != nullptr) { for (unsigned int i = 0; i < mySensorUltrasonic->size(); i++) { From f928766de5f5314970f2e4ffde00d501585c67d0 Mon Sep 17 00:00:00 2001 From: biver Date: Thu, 13 Jan 2022 21:05:06 +0300 Subject: [PATCH 5/6] =?UTF-8?q?=D0=A3=D0=B1=D0=B5=D1=80=D0=B0=D0=B5=D0=BC?= =?UTF-8?q?=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=B5=D1=82=D1=80=20index=20=D0=B8=D0=B7=20=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20TM1637?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_esp/items/items.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_esp/items/items.txt b/data_esp/items/items.txt index 3d52f4ae..64a71812 100644 --- a/data_esp/items/items.txt +++ b/data_esp/items/items.txt @@ -39,5 +39,5 @@ 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_temp];addr[0x76] 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[AHTX0_hum];addr[0x76]* 0;LCD2004;lcdid;na;na;IP;1;addr[0x27];k[16,2];int[10];c[0,0];val[ip]* -0;TM1637;dispid;na;na;f;1;pin[12,13];int[10];index[0];c[4];k[0];val[1234]* +0;TM1637;dispid;na;na;f;1;pin[12,13];int[10];c[4];k[0];val[1234]* 0;sensor;anyid;anydata;Сенсоры;Параметр;1;c[1];int[10];type[type1];addr[0x76]* \ No newline at end of file From f135840ec46cdad174909b03b459730c388ddfdb Mon Sep 17 00:00:00 2001 From: biver Date: Thu, 13 Jan 2022 21:32:29 +0300 Subject: [PATCH 6/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B2=D0=B5=D1=81=D1=8C=20=D0=BE=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BD=D0=BE=D0=B9=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=20=D0=B4=D0=BB=D1=8F=20TM1637?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/items/vSensorTM1637.h | 20 +++--- src/items/vSensorTM1637.cpp | 118 ++++++++++++++++------------------ 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/include/items/vSensorTM1637.h b/include/items/vSensorTM1637.h index 70552be2..866dbb14 100644 --- a/include/items/vSensorTM1637.h +++ b/include/items/vSensorTM1637.h @@ -5,6 +5,10 @@ #include "Global.h" #include +struct DisplayObj { + TM1637Display* disp; + int curIndex; +}; class SensorTM1637; @@ -12,26 +16,26 @@ typedef std::vector MySensorTM1637Vector; class SensorTM1637 { public: - SensorTM1637(String key, unsigned long interval, unsigned int x, unsigned int y, String val, String descr); + SensorTM1637(String key, int pin1, int pin2, unsigned long interval, unsigned int c, unsigned int k, String val, String descr); ~SensorTM1637(); void loop(); void writeTM1637(); void execute(String command); String _key; - void printBlankStr(int strSize); private: unsigned long currentMillis; unsigned long prevMillis; unsigned long difference; - - unsigned long _interval; - unsigned int _x; - unsigned int _y; - String _val; + String _descr; - int _prevStrSize; + unsigned long _interval; + unsigned int _c; + unsigned int _k; + String _val; + + TM1637Display* _disp; }; extern MySensorTM1637Vector* mySensorTM1637; diff --git a/src/items/vSensorTM1637.cpp b/src/items/vSensorTM1637.cpp index 7290836b..c59153bd 100644 --- a/src/items/vSensorTM1637.cpp +++ b/src/items/vSensorTM1637.cpp @@ -9,51 +9,58 @@ #include -//LiquidCrystal_I2C *LCDI2C2; +const uint8_t segmentsVal[] = {0x77, 0x7f, 0x39, 0x3f, 0x79, 0x71, 0x3d, 0x76, 0x1e, 0x38, 0x37, 0x3f, 0x73, 0x6d, 0x3e, 0x6e, 0x5f, 0x7c, 0x58, 0x5e, 0x7b, 0x71, 0x74, 0x10, 0x0e, 0x06, 0x54, 0x5c, 0x67, 0x50, 0x78, 0x1c, 0x6e, 0x40, 0x08, 0x48, 0x00, 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; +char segmentsIndex[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'L', 'N', 'O', 'P', 'S', 'U', 'Y', 'a', 'b', 'c', 'd', 'e', 'f', 'h', 'i', 'j', 'l', 'n', 'o', 'q', 'r', 't', 'u', 'y', '-', '_', '=', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; -SensorTM1637::SensorTM1637(String key, unsigned long interval, unsigned int x, unsigned int y, String val, String descr) { + +std::map displayObjects; + +uint8_t char2Segment(char ch) { + for (int i=0; isetBrightness(0x0f); + _disp->clear(); + } else { + _disp = displayObjects[pin1].disp; + } } SensorTM1637::~SensorTM1637() {} -//печать пустой строки нужной длинны для затирания предыдущего значения на экране -void SensorTM1637::printBlankStr(int strSize){ - String tmpStr = ""; - for(int i=0; isetCursor(_x, _y); - //LCDI2C2->print(tmpStr); -} - void SensorTM1637::execute(String command) { - //if (command == "noBacklight") LCDI2C2->noBacklight(); - //else if (command == "backlight") LCDI2C2->backlight(); - //else if (command == "noDisplay") LCDI2C2->noDisplay(); - //else if (command == "display") LCDI2C2->display(); - //else if (command == "x") { - // printBlankStr(_prevStrSize); - // String par = sCmd.next(); - // _x = par.toInt(); - //} - //else if (command == "y") { - // printBlankStr(_prevStrSize); - // String par = sCmd.next(); - // _y = par.toInt(); - //} - //else if (command == "descr") { - // printBlankStr(_prevStrSize); - // String par = sCmd.next(); - // _descr = par; - //} - //else { //не команда, значит данные - // _val = command; - //} + if (command == "noDisplay") _disp->setBrightness(0x00, false); + else if (command == "display") _disp->setBrightness(0x0f, true); + else if (command == "setBrightness") { + String par = sCmd.next(); + _disp->setBrightness(par.toInt()); + } + else if (command == "descr") { + String par = sCmd.next(); + _descr = par; + } + else { //не команда, значит данные + _val = command; + } writeTM1637(); } @@ -68,17 +75,17 @@ void SensorTM1637::loop() { } void SensorTM1637::writeTM1637() { - // if (LCDI2C2 != nullptr) { - // printBlankStr(_prevStrSize); - - // String tmpStr = getValue(_val); - // if (tmpStr == "no value") tmpStr = _val; - // if (_descr != "none") tmpStr = _descr + " " + tmpStr; - // LCDI2C2->setCursor(_x, _y); - // LCDI2C2->print(tmpStr); - - // _prevStrSize = tmpStr.length(); - // } + if (_disp != nullptr) { + if (_descr != "none") { + uint8_t segments[] = {0}; + segments[0] = char2Segment(_descr.c_str()[0]); + _disp->setSegments(segments, 1, 0); //выводим поле описания в самом первой секции экрана, один символ + } + String tmpStr = getValue(_val); + if (tmpStr == "no value") tmpStr = _val; + + _disp->showNumberDec(tmpStr.toInt(), false, _c, _k); + } } MySensorTM1637Vector* mySensorTM1637 = nullptr; @@ -95,7 +102,7 @@ void TM1637Execute() { void TM1637() { myLineParsing.update(); String key = myLineParsing.gkey(); - String addr = myLineParsing.gaddr(); + String pins = myLineParsing.gpin(); String interval = myLineParsing.gint(); String c = myLineParsing.gc(); String k = myLineParsing.gk(); @@ -103,24 +110,13 @@ void TM1637() { String descr = myLineParsing.gdescr(); myLineParsing.clear(); - int x = selectFromMarkerToMarker(c, ",", 0).toInt(); - int y = selectFromMarkerToMarker(c, ",", 1).toInt(); - int w = selectFromMarkerToMarker(k, ",", 0).toInt(); //количество столбцов - int h = selectFromMarkerToMarker(k, ",", 1).toInt(); //количество строк - - // if (LCDI2C2 == nullptr) { //инициализации экрана еще не было - // //LCDI2C2 = new LiquidCrystal_I2C(hexStringToUint8(addr), w, h);//hexStringToUint8(addr), w, h); - // if(LCDI2C2 != nullptr) { - // LCDI2C2->init(); - // LCDI2C2->backlight(); - // } - // } - + int pin1 = selectFromMarkerToMarker(pins, ",", 0).toInt(); + int pin2 = selectFromMarkerToMarker(pins, ",", 1).toInt(); static bool firstTime = true; if (firstTime) mySensorTM1637 = new MySensorTM1637Vector(); firstTime = false; - mySensorTM1637->push_back(SensorTM1637(key, interval.toInt(), x, y, val, descr)); + mySensorTM1637->push_back(SensorTM1637(key, pin1, pin2, interval.toInt(), c.toInt(), k.toInt(), val, descr)); sCmd.addCommand(key.c_str(), TM1637Execute); }