Uno + Nextion + расширитель портов на pcf8574 + 18b20

SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение SSSergeich »

Доброго времени суток!

Прошу помощи или совета.
Суть вот в чем, хочу сделать контроль показаний температуры и влажности в 8-ми помещениях (16 переменных).
В каждом помещении по 3 исполнительных устройства ( 24 реле, 24 переменных)
Итого 40 переменных, 24 буля и 16 стрингов.
Вывод этих показаний на панель Nextion и с нее же индивидуальное управление каждым реле (Dual-Button).
В FLProg gробно создал один датчик 18b20, опрос раз с секунду, при изменении отправка в переменную на панель.
В Nextion создал три кнопки с фиксацией нажатия и отправка состояния в булеановские переменные FLProg.
Управление через скачанный блок от Sancho PCF8574-OUT
Проверил работу, все ок, температура на экран выводится, светодиоды подключенные к pcf8574 управляются.
Скопипастил кол-во кнопок и выходов до 24, управление выходами пошло с задержкой на пару секунд
Добавил еще 7 датчиков 18b20, плату ds3231 и начались полные тормоза. Ардуино ругается что мало памяти осталось, возможны глюки.
В листинге ардуино такое вот
[hide]

Код: Выделить всё

[shadow=blue]#include <Wire.h>
#include <Wire.h>[/shadow]

#include <OneWire.h>
byte _d18x2x2Addr[8]={0x28, 0xAC, 0x57, 0xB1, 0x1, 0x0, 0x0, 0x4E};

byte _d18x2x3Addr[8]={0x28, 0xA3, 0xD9, 0xB2, 0x1, 0x0, 0x0, 0x8B};

byte _d18x2x4Addr[8]={0x28, 0x25, 0xF1, 0xB1, 0x1, 0x0, 0x0, 0x9D};

byte _d18x2x5Addr[8]={0x28, 0x19, 0xB5, 0xAF, 0x1, 0x0, 0x0, 0xD6};


byte _d18x2x6Addr[8]={0x28, 0x25, 0x85, 0xE5, 0x0, 0x0, 0x0, 0x92};

byte _d18x2x1Addr[8]={0x28, 0x10, 0xCD, 0xE5, 0x0, 0x0, 0x0, 0x43};

byte _d18x2x7Addr[8]={0x28, 0xBE, 0x1A, 0xB0, 0x1, 0x0, 0x0, 0xF1};

byte _d18x2x8Addr[8]={0x28, 0xD7, 0xA4, 0xB2, 0x1, 0x0, 0x0, 0x4E};

OneWire  _ow4(4);
bool P0_196714420_1;
bool P1_196714420_1;
bool P2_196714420_1;
bool P3_196714420_1;
bool P4_196714420_1;
bool P5_196714420_1;
bool P6_196714420_1;
bool P7_196714420_1;
byte byte_in_196714420_1;
byte byte_out_196714420_1;
bool P0_196714420_2;
bool P1_196714420_2;
bool P2_196714420_2;
bool P3_196714420_2;
bool P4_196714420_2;
bool P5_196714420_2;
bool P6_196714420_2;
bool P7_196714420_2;
byte byte_in_196714420_2;
byte byte_out_196714420_2;
bool P0_196714420_3;
bool P1_196714420_3;
bool P2_196714420_3;
bool P3_196714420_3;
bool P4_196714420_3;
bool P5_196714420_3;
bool P6_196714420_3;
bool P7_196714420_3;
byte byte_in_196714420_3;
byte byte_out_196714420_3;
String _nextionSaveDataTXT_P0_E4;
String _nextionSaveDataTXT_P0_E30;
String _nextionSaveDataTXT_P0_E32;
String _nextionSaveDataTXT_P0_E34;
String _nextionSaveDataTXT_P0_E36;
String _nextionSaveDataTXT_P0_E38;
String _nextionSaveDataTXT_P0_E40;
String _nextionSaveDataTXT_P0_E42;
struct _nextionLissenStruct{
char code;
String result;
long number;
};
_nextionLissenStruct _nextionTempLissen;
struct _I2CRealRimeClockTime
{
 byte seconds = 0;
 byte minutes = 0;
 byte Hours = 0;
 byte weekday = 0;
 byte day = 0;
 byte month = 0;
 byte year = 0;
 unsigned long startTime = 0;
};
_I2CRealRimeClockTime _RTC1;
int _PWDC = 0;
bool _gtv1 = 0;
bool _gtv2 = 0;
bool _gtv3 = 0;
bool _gtv4 = 0;
bool _gtv5 = 0;
bool _gtv6 = 0;
bool _gtv7 = 0;
bool _gtv8 = 0;
bool _gtv10 = 0;
bool _gtv11 = 0;
bool _gtv12 = 0;
bool _gtv13 = 0;
bool _gtv14 = 0;
bool _gtv15 = 0;
bool _gtv16 = 0;
bool _gtv18 = 0;
bool _gtv19 = 0;
bool _gtv20 = 0;
bool _gtv21 = 0;
bool _gtv22 = 0;
bool _gtv23 = 0;
bool _gtv24 = 0;
bool _gtv58 = 0;
bool _gtv17 = 0;
float _gtv25 = 0;
float _gtv26 = 0;
float _gtv27 = 0;
float _gtv28 = 0;
float _gtv29 = 0;
float _gtv30 = 0;
float _gtv31 = 0;
float _gtv32 = 0;
bool _gtv33 = 0;
String _gtv9;
String _gtv35;
bool _nextionGetValue19_outputValue;
long _nextionGetValue19_StartTime;
bool _nextionGetValue19_isNU = 0;
bool _changeNumber9_Out = 0;
int _changeNumber9_OLV;
unsigned long _d18x2x1Tti = 0UL;
float _d18x2x1O = 0.00;
bool _nextionGetValue16_outputValue;
long _nextionGetValue16_StartTime;
bool _nextionGetValue16_isNU = 0;
bool _nextionGetValue13_outputValue;
long _nextionGetValue13_StartTime;
bool _nextionGetValue13_isNU = 0;
bool _nextionGetValue10_outputValue;
long _nextionGetValue10_StartTime;
bool _nextionGetValue10_isNU = 0;
String _GSFS8 = "0";
String _GSFS7 = "0";
String _GSFS6 = "0";
bool _nextionSetAttr6_isNU = 0;
bool _nextionSetAttr6_oldState = 0;
bool _nextionGetValue24_outputValue;
long _nextionGetValue24_StartTime;
bool _nextionGetValue24_isNU = 0;
bool _nextionSetAttr3_isNU = 0;
bool _nextionSetAttr3_oldState = 0;
unsigned long _d18x2x6Tti = 0UL;
float _d18x2x6O = 0.00;
bool _nextionSetAttr2_isNU = 0;
bool _nextionSetAttr2_oldState = 0;
bool _nextionGetValue21_outputValue;
long _nextionGetValue21_StartTime;
bool _nextionGetValue21_isNU = 0;
unsigned long _d18x2x3Tti = 0UL;
float _d18x2x3O = 0.00;
bool _nextionGetValue18_outputValue;
long _nextionGetValue18_StartTime;
bool _nextionGetValue18_isNU = 0;
bool _nextionGetValue15_outputValue;
long _nextionGetValue15_StartTime;
bool _nextionGetValue15_isNU = 0;
String _RTC1_GetTime2_StrOut;
String _GSFS2 = "0";
bool _nextionSetAttr8_isNU = 0;
bool _nextionSetAttr8_oldState = 0;
bool _nextionGetValue7_outputValue;
long _nextionGetValue7_StartTime;
bool _nextionGetValue7_isNU = 0;
unsigned long _d18x2x8Tti = 0UL;
float _d18x2x8O = 0.00;
bool _nextionGetValue23_outputValue;
long _nextionGetValue23_StartTime;
bool _nextionGetValue23_isNU = 0;
bool _nextionGetValue4_outputValue;
long _nextionGetValue4_StartTime;
bool _nextionGetValue4_isNU = 0;
unsigned long _d18x2x5Tti = 0UL;
float _d18x2x5O = 0.00;
unsigned long _d18x2x2Tti = 0UL;
float _d18x2x2O = 0.00;
bool _nextionGetValue2_outputValue;
long _nextionGetValue2_StartTime;
bool _nextionGetValue2_isNU = 0;
bool _changeNumber2_Out = 0;
int _changeNumber2_OLV;
String _GSFS1 = "0";
bool _nextionGetValue6_outputValue;
long _nextionGetValue6_StartTime;
bool _nextionGetValue6_isNU = 0;
unsigned long _d18x2x7Tti = 0UL;
float _d18x2x7O = 0.00;
bool _nextionGetValue3_outputValue;
long _nextionGetValue3_StartTime;
bool _nextionGetValue3_isNU = 0;
unsigned long _d18x2x4Tti = 0UL;
float _d18x2x4O = 0.00;
String _GSFS5 = "0";
bool _nextionGetValue1_outputValue;
long _nextionGetValue1_StartTime;
bool _nextionGetValue1_isNU = 0;
String _GSFS4 = "0";
String _GSFS3 = "0";
bool _changeNumber1_Out = 0;
int _changeNumber1_OLV;
bool _nextionSetAttr1_isNU = 0;
bool _nextionSetAttr1_oldState = 0;
bool _nextionGetValue12_outputValue;
long _nextionGetValue12_StartTime;
bool _nextionGetValue12_isNU = 0;
bool _nextionGetValue9_outputValue;
long _nextionGetValue9_StartTime;
bool _nextionGetValue9_isNU = 0;
bool _nextionGetValue8_outputValue;
long _nextionGetValue8_StartTime;
bool _nextionGetValue8_isNU = 0;
bool _nextionGetValue5_outputValue;
long _nextionGetValue5_StartTime;
bool _nextionGetValue5_isNU = 0;
bool _nextionSetAttr5_isNU = 0;
bool _nextionSetAttr5_oldState = 0;
bool _nextionGetValue20_outputValue;
long _nextionGetValue20_StartTime;
bool _nextionGetValue20_isNU = 0;
bool _nextionGetValue17_outputValue;
long _nextionGetValue17_StartTime;
bool _nextionGetValue17_isNU = 0;
bool _nextionGetValue14_outputValue;
long _nextionGetValue14_StartTime;
bool _nextionGetValue14_isNU = 0;
bool _nextionGetValue11_outputValue;
long _nextionGetValue11_StartTime;
bool _nextionGetValue11_isNU = 0;
String _RTC1_GetTime1_StrOut;
bool _changeNumber6_Out = 0;
int _changeNumber6_OLV;
bool _changeNumber5_Out = 0;
int _changeNumber5_OLV;
bool _changeNumber4_Out = 0;
int _changeNumber4_OLV;
bool _changeNumber3_Out = 0;
int _changeNumber3_OLV;
bool _nextionSetAttr7_isNU = 0;
bool _nextionSetAttr7_oldState = 0;
bool _nextionSetAttr4_isNU = 0;
bool _nextionSetAttr4_oldState = 0;
bool _nextionGetValue22_outputValue;
long _nextionGetValue22_StartTime;
bool _nextionGetValue22_isNU = 0;
bool _changeNumber10_Out = 0;
int _changeNumber10_OLV;
void setup()
{
Wire.begin();
delay(10);
TCCR2A = 0x00;
TCCR2B =  0x07;
TIMSK2=0x01;
TCNT2=100;
Wire.beginTransmission(68);
Wire.write(0x0E);
Wire.write(B00000000);
Wire.write(B10001000);
Wire.endTransmission();
_RTC1.startTime = millis() - 1000;
[dropshadow=blue]Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);
Serial.begin(9600);[/dropshadow]
nextionSendCommand("", 0);
nextionSendCommand("page 0", 0);
_nextionGetValue1_StartTime = millis();
_nextionGetValue2_StartTime = millis();
_nextionGetValue3_StartTime = millis();
_nextionGetValue4_StartTime = millis();
_nextionGetValue5_StartTime = millis();
_nextionGetValue6_StartTime = millis();
_nextionGetValue7_StartTime = millis();
_nextionGetValue8_StartTime = millis();
_nextionGetValue9_StartTime = millis();
_nextionGetValue10_StartTime = millis();
_nextionGetValue11_StartTime = millis();
_nextionGetValue12_StartTime = millis();
_nextionGetValue13_StartTime = millis();
_nextionGetValue14_StartTime = millis();
_nextionGetValue15_StartTime = millis();
_nextionGetValue16_StartTime = millis();
_nextionGetValue17_StartTime = millis();
_nextionGetValue18_StartTime = millis();
_nextionGetValue19_StartTime = millis();
_nextionGetValue20_StartTime = millis();
_nextionGetValue21_StartTime = millis();
_nextionGetValue22_StartTime = millis();
_nextionGetValue23_StartTime = millis();
_nextionGetValue24_StartTime = millis();
[dropshadow=blue]  Wire.begin();
  Wire.begin();
  Wire.begin();[/dropshadow]
}
void loop()
{String _tempVariable_String;
int _tempVariable_int;
_PWDC = 0;




[/hide]

Это нормально, или где-то косяк искать?
В дальнейшем планировалось два режима, ручной и автомат. В автомате работа одного реле по гистерезису температуры, второго по влажности. Но теперь бооольшие сомнения, а потянет ли UNO это?
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

Думаю, тормоза не из-за количества каналов температуры/управления в проекте, а от обилия кнопок на панели и передаваемых на нее значений, ведь каждая из них отрабатывается своим куском кода и прочими накладными, а работа с панелью в flprog, если я правильно понял, в настоящий момент не оптимизирована и очень ресурсоёмка.
Я когда ваял пивоварню с ней, забил полностью всю Мегу вплоть до отказа компилироваться и имел дикие тормоза. Посоветовали на работу с панелью выделить отдельный контроллер, но это не спортивно. Решил оптимизировать не только собственно код программы, но и операции обмена данными с панелью. В частности, передавал значения не по отдельному параметру, а сразу большими пакетами, упаковывая их в отдельные строки, а на панели эти строки разбирал. Главное при этом, чтобы значение каждого параметра было строго на своем знакоместе. Точно так же отправлял значения вводимых параметров обратно - одной большой строкой, выдирая из нее то, что было нужно.
В итоге код программы сократился почти вдвое, тормоза ушли. Осадочек, правда, остался. Но возникла мысль сделать панельку универсальной для многих устройств, подключаясь по радиоудлиннителю com-порта.
В Вашем случае можно получать с панели нажатия на 24 кнопки одной строкой в 24 знакоместа, или как их там. А температуру отправлять, если без десятых долей, строкой в 16 знакомест и еще одной такой же - влажность.
Во вложении иллюстрация упаковки отправки значений с подсказкой по положению значения в строке. Если суть ясна, проблем не будет. Но нужно изучить программирование панели. Мне, как непрограммисту, это удалось. В моих скромных масштабах.
[spoiler]
H.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Sancho »

[ref]SSSergeich[/ref], Перезалейте код - не хочет совсем компилиться, пишет не обозначено nextionSendCommand....
Кнопки, биты, попробуйте упаковать в байты и тоже отправить компактно.
Хотя-бы проект, что-бы действительно посмотреть, чего там с памятью...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
grin-mpx
Лейтенант
Сообщения: 477
Зарегистрирован: 17 июл 2017, 18:39
Откуда: Днепр. UA
Имя: Григорий

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение grin-mpx »

SSSergeich писал(а): 26 дек 2018, 22:36Суть вот в чем, хочу сделать контроль показаний температуры и влажности в 8-ми помещениях (16 переменных).
В каждом помещении по 3 исполнительных устройства ( 24 реле, 24 переменных)
Итого 40 переменных, 24 буля и 16 стрингов.
Вывод этих показаний на панель Nextion и с нее же индивидуальное управление каждым реле (Dual-Button).
В FLProg gробно создал один датчик 18b20, опрос раз с секунду, при изменении отправка в переменную на панель.
Ну во первых сразу переходите на Мегу памяти у вас скорее всего не хватит, для компактности можете взять Mega PRO от RoboDin.
Опрос каждого датчика лучше делать не чаще 1 раза в 10 сек, чаще смысла нет. И самое главное, это как написал выше Alias это упаковка данных в одну строку и последующая распаковка. Ну хотя-бы кнопки упаковать в одну строку на стороне дисплея и распаковывать в ардуине. Это значительно сократит время обращения к дисплею.
Еще один вариант, это сделать на дисплее количество страниц соответствующее вашим помещениям. Каждая страница- отдельное помещение с датчиками и релюшками, в ардуине организовать опрос и передачу данных только в привязке к страницам. В этом случае количество одновременно передаваемых переменных на дисплей сократится в 8 раз. Возможно это ускорит работу системы в целом.

Отправлено спустя 9 минут 10 секунд:
[ref=#404040]Alias[/ref], У меня кстати получилось запаковывать в ардуине и распаковывать в дисплее данные в одну строку независимо от длинны каждого значения и точек с запятыми. В частности запаковывал значения не более 5 знаков каждое. Правда у меня на каждой странице только по 4 значения присутствуют, но возможно можно и больше, уже точно не помню.
Но есть нюанс, я выводил значения постоянные, при переходе на страницу. Меняющиеся значения выводить не пробовал, но думаю возможно.
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

А у меня не хватило тёму, поэтому подогнал потребности под возможности.
Так выпьем же за то, чтобы в Новом году наши возможности совпадали с нашими желаниями! А не наоборот, как у классика ;)
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение SSSergeich »

[ref=#404040]Alias[/ref], Скорей всего так и придется делать. Но, мне кается, что и сама генерация кода не совсем оптимальна.
Я тоже далеко не программист, потому мне и непонятно, зачем нужны строки 260-290, 293-316, Зачем столько повторений. Такое ощущение, что цикл в цикле крутится. Зачем в сетапе подключается два раза #include <Wire.h>
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение SSSergeich »

[ref=#ff8000]Sancho[/ref],
Sancho писал(а): 27 дек 2018, 09:14Перезалейте код - не хочет совсем компилиться, пишет не обозначено nextionSendCommand....
там не весь код, а пример того что мне непонятно.
Sancho писал(а): 27 дек 2018, 09:14Хотя-бы проект, что-бы действительно посмотреть, чего там с памятью...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение SSSergeich »

[ref]grin-mpx[/ref],
grin-mpx писал(а): 27 дек 2018, 09:41Ну во первых сразу переходите на Мегу памяти у вас скорее всего не хватит, для компактности можете взять Mega PRO от RoboDin.
Опрос каждого датчика лучше делать не чаще 1 раза в 10 сек, чаще смысла нет. И самое главное, это как написал выше Alias это упаковка данных в одну строку и последующая распаковка. Ну хотя-бы кнопки упаковать в одну строку на стороне дисплея и распаковывать в ардуине. Это значительно сократит время обращения к дисплею.
Еще один вариант, это сделать на дисплее количество страниц соответствующее вашим помещениям. Каждая страница- отдельное помещение с датчиками и релюшками, в ардуине организовать опрос и передачу данных только в привязке к страницам. В этом случае количество одновременно передаваемых переменных на дисплей сократится в 8 раз. Возможно это ускорит работу системы в целом.
Да, спасибо, мысль ясна, буду пытаться
В каждую страницу не вариант, нужно видеть картинку в целом и управлять. В отдельную страницу хотел завести настройку уставок
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

Хм, пусть меня поправят программисты, но столько операций с плавающей запятой на таком примитивном участке - перебор. Умножить, преобразовать, разделить, сконвертировать... Я бы сделал проще, см. вложение. Да, не будет десятичной точки. Мне это не помешало ее просто нарисовать на панели. Но зато нет и массы изнурительных вычислений, а пересылка значения, насколько я понимаю, тоже куда легче пересылки строки. Не знаю, есть ли смысл отказываться от ненужной переменной, но удалил.
Может, попробуете этот вариант? Чисто для сравнения.
[spoiler]
H.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Sancho »

[ref]SSSergeich[/ref],
Немного изменил код, чуток.
Попробуйте собрать в панели все сигналы от осушителей в один байт и одним значением отправлять/принимать в ардуинке. То-же проделайте для конвекторов и вентиляторов. Получится 3 переменных вместо 24.
Пример на последней плате, вместо двух предпоследних.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

У меня вариант несколько проще для понимания, можно попробовать с него, а упаковку позже, если не поможет.
ЗЫ На второй плате "непропай" :smile390:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Alias 28 дек 2018, 14:54, всего редактировалось 1 раз.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Sancho »

Коллеги.
Посмотрите код - 24 таймера для периодического приёма данных.
Может лучше три, но пусть будут данные Т с запятыми :)
Вот нет панели, только сейчас скачал прогу nextion editor, посмотрю, что за зверь :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

Тогда уж и отправлять значения температуры нужно одной строкой, а это 32 символа, чтобы ничего не поплыло и на панели разбирать по переменным. Это несложно, если вникнуть, но на это у топикстартера может уйти много времени, и, если устроит "оптимизация на коленке", пусть работает, как есть :)
А куча таймеров - беда. Надеюсь, у Автора будет желание заточить инструмент и под панель.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Sancho »

Alias писал(а): 28 дек 2018, 15:00Надеюсь, у Автора будет желание заточить инструмент и под панель.
Он не причём.
Вот так пока тогда, режим "в каждом цикле" - у всех на этой плате. Ещё два килобайта.... :)
А если будет всего три байта...
[spoiler]
screenshot_18-12-28_15-27-41.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

А я даже и не заглянул, что там :smile390: Думал, так же, как у датчиков - по секунде.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Sancho »

Alias писал(а): 28 дек 2018, 15:53А я даже и не заглянул, что там :smile390: Думал, так же, как у датчиков - по секунде.
Там и было по секунде у каждого! - поэтому столько таймеров. Я сделал один для всех. :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Alias
Лейтенант
Сообщения: 481
Зарегистрирован: 27 ноя 2017, 13:15
Откуда: Rus44
Имя: Michael
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Alias »

А, вот Вы что имели в виду с таймерами! Сорри, я думал, это работа с панелью генерирует. Непрограммисту сложно понять, откуда растут ноги. Спасибо за подсказки!
Аватара пользователя
grin-mpx
Лейтенант
Сообщения: 477
Зарегистрирован: 17 июл 2017, 18:39
Откуда: Днепр. UA
Имя: Григорий

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение grin-mpx »

Выкладываю простой способ упаковки булеанов кнопок на дисплее в строку с последующим разбором в flprog. В примере только 2 кнопки, но добавив сами кнопки+ переменные+ ДОПИСАТЬ КОД В ТАЙМЕРЕ, то можно увеличивать кол. кнопок до..,( не знаю до скольки :D ) и естественно в флпрог нужно добавить блоки получения символов из строки. Цифра 7 значит включено, цифра 5-выключено.
bool_string.flp
bool_string.HMI
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось grin-mpx 28 дек 2018, 16:16, всего редактировалось 3 раза.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение Sancho »

[ref=#404040]Alias[/ref], Тот-же сигнал, или сдвинутый на пол-секунды( добавить ещё один триггер, сигнал на входе проинвертировать) подать на 18В20, настройки: "Вход разрешения опроса", "В каждом цикле". Ещё чутка байт :)

Отправлено спустя 38 секунд:
[ref]grin-mpx[/ref], А как упаковать просто в байт? Пока не разобрался.

Отправлено спустя 48 секунд:
Но идеи есть! :)
Изучаю Вашу прогу....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
grin-mpx
Лейтенант
Сообщения: 477
Зарегистрирован: 17 июл 2017, 18:39
Откуда: Днепр. UA
Имя: Григорий

Uno + Nextion + расширитель портов на pcf8574 + 18b20

Сообщение grin-mpx »

Sancho писал(а): 28 дек 2018, 16:11А как упаковать просто в байт? Пока не разобрался.
С дисплея? Если да, то в строку. Выше выложил. Если в байты, то я не паковал в них, только в строки.
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя