Страница 3 из 4
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 29 дек 2018, 16:47
Sancho
SSSergeich писал(а): 29 дек 2018, 16:29Берем две картинки, на одной все выключены, на другой все включены, далее в атрибутах есть два параметра picc0 и picc1, в первую гружу неактивную картинку, во вторую активную.
Но это атрибуты кнопки!
Например, в других прогах, есть прямоугольник, цвет в котором можно менять атрибутом 0/1, или картинка с атрибутом "скрыть" 0/1.
Или я пока не догоняю?
Вот пытаюсь разобраться как у Вас работает - не вкуриваю, чесн слово.
Отправлено спустя 2 минуты 18 секунд:
Он, получается, только зону кнопки меняет с разных картинок???
Отправлено спустя 1 минуту 27 секунд:
Точно, попробовал сдвинул кнопку!!!! Вот фокус!
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 29 дек 2018, 16:59
SSSergeich
Я тоже долго вникал, посмотрел уроки от Сергея Глушенко и разобрался.
У него вроде во втором уроке был пример как загорается символ солнца
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 29 дек 2018, 22:52
grin-mpx
Использование элемента Crop в панели. Может кому сгодится.
Crop.HMI
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 30 дек 2018, 08:14
SSSergeich
Sancho писал(а): 29 дек 2018, 16:47Он, получается, только зону кнопки меняет с разных картинок???
Отправлено спустя 1 минуту 27 секунд:
Точно, попробовал сдвинул кнопку!!!! Вот фокус!
По другому сказать, берется одна картинка, на нее сверху накладывается вторая, а активность/неактивность меняет прозрачность между ними размерным окошком кнопки.
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 30 дек 2018, 11:30
Sancho
Понято. Вот хитро то как

Но картинок меньше в проекте! И делать проще, относительно...
Отправлено спустя 3 часа 4 минуты 2 секунды:
[ref]SSSergeich[/ref], Затести.
Не знаю, заработает-ли, но старался.

Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 30 дек 2018, 19:00
SSSergeich
[ref=#ff8000]Sancho[/ref], Ух!
Интересный подход!)
Сижу изучаю, в железе только завтра смогу проверить, на работе оставил.
P.S. Мое предложение самому потестить экранчик в силе.
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 31 дек 2018, 22:09
SSSergeich
[ref=#ff8000]Sancho[/ref], Спасибо!!!
Каюсь, с предновогодней суетой так и не смог заскочить на работу днем... Самому не терпится пощупать...
Буду пытаться в ближайшие дни забрать.
С наступающим Новым Годом!!!

Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 01 янв 2019, 13:23
SSSergeich
[ref=#ff8000]Sancho[/ref],
Залил проги в экран и в уно. Где-то что-то не так. На экране кнопки нажимаются, данные в окошке изменяются, но уно никак не реагирует.
Экран постоянно норовит переключиться на первую страницу "заглушка". Интервалы времени беспорядочные, от 1 секунды и до 20.
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 02 янв 2019, 12:17
SSSergeich
Переключение идет из-за платы 3.
Сменил ID у Page0 c 0 на 1. Рефрешить стало страницу с кнопками. Управления нет.
Не могу понять в чем затык
Отправлено спустя 3 минуты 56 секунд:
Добавил lcd экран, так сказать для дебага.
Строка1, столбец 1 - пусто
Строка2, столбец 1 - пусто
Строка3, столбец 1 - пусто
Строка4, столбец 1 - 0
Строка1, столбец 5 - 0.0
Отправлено спустя 24 минуты 15 секунд:
Добавил HMI
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 02 янв 2019, 17:23
SSSergeich
Ещё забыл добавить, во время рефреша панели, lcd дисплей тоже "промаргивает", такое ощущение, что ребутится контроллер. Не помню, включал в настройках ватчдог или нет, вроде включал.
Надо было включить счётчик с выводом на lcd, чтобы понять, работает контроллер или вообще висит с самого начала.
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 03 янв 2019, 20:53
SSSergeich
Воткнул счетчик с выводом на lcd, мои предположения подтвердились, проблему создает 3-я плата, контроллер с ней висит.
При отключении компиляции 3-й платы, температура показывается, счетчик считает.
[spoiler=]
trabl.PNG
[/spoiler]
Отправлено спустя 12 минут 12 секунд:
Что в ней такого критичного, что вешает контроллер?
Отправлено спустя 2 часа 33 минуты 33 секунды:
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 03 янв 2019, 20:54
SSSergeich
Вот,[ref=#ff8000]Sancho[/ref], вот голова!
Значит первое, рад личному знакомству!
Второе - причина зависания была найдена и устранена по телефону.
В моем первоначальном проекте и использовалось 3 блока PCF8574_out, при этом физически была подключена только одна плата с адресом 3C.
Автор блока, полагая, что у меня подключены все 3 платы, оптимизировал проект с использованием 3-х блоков PCF8574 byte_in byte_out. Проблема была в том, что нельзя использовать блоки с адресами физически отсутствующих устройств на шине I2C.
Третье - Есть проблема в передаче числа с панели в ардуино. А именно, нормально передаются числа до 32767. Если я пересылаю число "32768", то UNO получает это число уже как "-32768". Соответственно, если передаю "49512", значение переменной в UNO принимает "-16384".
Осталось разобраться кто "косячит", экран NEXTION ( но на экране число отображается правильно), библиотека NEXTION или блок NEXTION в FLProg.
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 03 янв 2019, 21:25
Alias
Я тоже встречался с такой проблемой
viewtopic.php?p=52263#p52263
Не помню, писал Автору или нет, но можно вопрос задать. В панели всплывающая подсказка говорит, что по крайней мере системные переменные - четырехбайтные. Но, мне кажется, что вдвое короче.
Думаю, до панели Автору долго еще будет не добраться...
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 03 янв 2019, 22:06
SSSergeich
Обновился с версии 4.2.0 на версию 4.2.2.
Перестал компилироваться проект, получаю ошибку:
[spoiler]
Код: Выделить всё
In function 'global constructors keyed to 65535_0_pr2.ino.cpp.o':
lto1.exe: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
lto-wrapper.exe: fatal error: c:\Users\User\Documents\FlProg\ideV2\portable\packages\arduino\tools\avr-gcc\5.4.0-atmel3.6.1-arduino2/bin/avr-gcc returned 1 exit status
compilation terminated.
c:/users/user/documents/flprog/idev2/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld.exe: error: lto-wrapper failed
collect2.exe: error: ld returned 1 exit status
Несколько библиотек найдено для "OneWire.h"
Используется: c:\Users\User\Documents\FlProg\ideV2\portable\sketchbook\libraries\OneWire
Не используется: c:\Users\User\Documents\FlProg\ideV2\libraries\OneWire
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
[/spoiler]
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 04 янв 2019, 08:53
Sancho
SSSergeich писал(а): 03 янв 2019, 22:06Перестал компилироваться проект, получаю ошибку:
Плата, менеджер плат Arduino AVR Boards. Поставить 1.6.21 или 23
У меня 1.6.23 - всё ок. Ардуино IDE внешняя, 1.8.8
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 04 янв 2019, 10:39
SSSergeich
Sancho писал(а): 04 янв 2019, 08:53Плата, менеджер плат Arduino AVR Boards. Поставить 1.6.21 или 23
У меня 1.6.23 - всё ок. Ардуино IDE внешняя, 1.8.8
Так же 1.6.23, только Ардуино IDE 1.8.1
Снес FLProg, установил по новой - заработало.
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 05 янв 2019, 14:51
Sancho
В результате теста на реальном железе выявлена проблема приёма из панели
Nextion числовой переменной long int - принимаются только два младших байта.
Панель передаёт все 4 байта младшим байтом вперёд в виде 71 01 02 04 08 FF FF FF , где 01 02 04 08 - четырёх-байтная переменная.
Панель для экспериментов любезно предоставлена [ref]SSSergeich[/ref].
[spoiler]
screenshot_19-01-05_12-30-30.png
screenshot_19-01-05_12-26-28.png
[/spoiler]
Отправлено спустя 2 часа 39 минут 8 секунд:
support писал(а): 05 янв 2019, 13:55Sancho писал(а): 05 янв 2019, 12:30Прошу Автора обратить внимание на
проблемку с Nextion панелью
Немного попозже, сейчас со временем туго. На днях выложу новую версию, а потом буду занят с головой (по основной работе припахали((( )
Временное решение:
Найти строку в IDE, внизу программы,
temp.number = (cmd[4] << 24) | (cmd[3] << 16) | (cmd[2] << 8) | (cmd[1]);
Заменить на
temp.number = uint32_t(cmd[4]) << 24 | uint32_t(cmd[3]) << 16 | uint32_t(cmd[2]) << 8 | uint32_t(cmd[1]);
Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 05 янв 2019, 19:58
SSSergeich
[ref=#404040]Alias[/ref], Проблема подтвердилась

Я тоже хотел пропустить её и применить один из костылей (либо преобразованием в строку либо использовать ещё одну 2-х байтовую переменную), если бы не дотошность Александра, зачем, говорит, нам костыли, на прямых ногах ходить гоже.

Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 06 янв 2019, 11:53
Sancho
Sancho писал(а): 05 янв 2019, 14:51Временное решение:
Найти строку в IDE, внизу программы,
temp.number = (cmd[4] << 24) | (cmd[3] << 16) | (cmd[2] << 8) | (cmd[1]);
Заменить на
temp.number = (uint32_t)cmd[4] << 24 | (uint32_t)cmd[3] << 16 | (cmd[2] << 8) | (cmd[1]);
Дальнейшие тесты показали - не совсем всё Ок.
Необходимо такое вставлять:
temp.number = (uint32_t)cmd[4] << 24 | (uint32_t)cmd[3] << 16 | (uint32_t)cmd[2] << 8 | (uint32_t)cmd[1];
Или так:
temp.number = uint32_t(cmd[4]) << 24 | uint32_t(cmd[3]) << 16 | uint32_t(cmd[2]) << 8 | uint32_t(cmd[1]);
Кому чего больше нравится

Тогда всё ок.
Отправлено спустя 15 минут 52 секунды:
По-ходу, надо новую тему завести с идеями оптимизации по Nextion и т.д.
Отправлено спустя 2 часа 23 минуты 34 секунды:
Ещё засада

Uno + Nextion + расширитель портов на pcf8574 + 18b20
Добавлено: 06 янв 2019, 16:53
SSSergeich
Sancho писал(а): 06 янв 2019, 11:53По-ходу, надо новую тему завести с идеями оптимизации по Nextion и т.д.

Заводи)
Может еще блоков каких придумаешь

SSSergeich писал(а): 03 янв 2019, 20:54Проблема была в том, что нельзя использовать блоки с адресами физически отсутствующих устройств на шине I2C.
Не могу понять, почему контроллер виснет при отключенных или не подключенных устройствах I2C? Ведь тот же самый lcd экран с I2C спокойно можно отключать и подключать и это не вызывает зависания контроллера
