Страница 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], Затести.
Не знаю, заработает-ли, но старался. :moil:

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], Спасибо!!!
Каюсь, с предновогодней суетой так и не смог заскочить на работу днем... Самому не терпится пощупать...
Буду пытаться в ближайшие дни забрать.
С наступающим Новым Годом!!! :smile160:

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], вот голова! :smile9:
Значит первое, рад личному знакомству! :)
Второе - причина зависания была найдена и устранена по телефону.
В моем первоначальном проекте и использовалось 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:55
Sancho писал(а): 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 спокойно можно отключать и подключать и это не вызывает зависания контроллера :smile427: