Flprog + nextion hmi. урок 3

Flprog + nextion hmi. урок 3

На прошлых уроках (урок 1, урок 2) я поведал, как рисовать интерфейс панели Nextion HMI, как руководить панелью посредством Arduino. В этом уроке я поведаю, как решать обратную задачу – руководить платой Arduino посредством панели Nextion HMI.На уроке мы расширим проект прошлого урока, добавим управление вентилятором, что будет включатся при превышении температуры выше заданного предела, и выключаться при понижении температуры ниже второго предела.

Уставки будут задаваться с панели, и сберигаться в энергонезависимой памяти контроллера Arduino. Помимо этого сделаем на панели выключатель света (двухпозиционный) и кнопку при помощи которой будем включать фонарь (к примеру что бы подавать сигнал инопланетянам).
Смотрите кроме этого: Управление Arduino посредством Excel

Хороший сутки. День назад на форуме программы FLProg пользователем Rw6cm был выложен весьма увлекательный пост. Я сделал вывод, что информация из него может оказаться занимательной более широкому кругу людей и переношу его ко мне.

Авторский текст сохранён без трансформаций.Пример, как из Excel руководить Arduino и приобретать эти. Информация возможно нужна приверженцам Excel и опытным базы VBA. Пример реализован в FLProg 1.10.5 на Windows7 — 32 и 64, и MsOffice 2007.

Все нужное для его повтора находится в архиве.

Доработанная схема с прошлого урока. Фонарь, вентилятор и свет будут имитировать светодиоды.Так же доработан проект панели. Добавлены две страницы.

Помимо этого был заменён шрифт загруженный в панель. Проект для панели находится в архиве, ссылка на что дана в конце статьи. В комментариях к прошлому уроку меня совсем справедливо пожурили за отсутствие дизайнерских талантов.

Я всецело с этим согласен, исходя из этого новые страницы не имеют никакого дизайна, чистый функционал.Разглядим новые страницы. Страница управления (“page3”, ID=3). Разглядим элементы, находящиеся на странице.

  1. Легко текстовые поля. Ничего занимательного.
  2. Поле отображения уставки включения вентилятора. Как я уже писал, панель не может трудиться с дробными числами. Исходя из этого это текстовые поля. Строчок для отображения будем готовить на ардуинке. Параметры элемента.Потому, что значение в это поле будем отправлять с контроллера, делаем его глобальным (атрибут “vscope” значение “global”). При нажатии на это поле будет происходить открытие страницы редактирования значения. Исходя из этого в событии “Touch Press Event” записан следующий код.При нажатии на элемент сперва в поле редактируемого значения на странице 4 заносим текущее значение.page4.evtemp.txt=onV.txtЗатем в переменную хранящую идентификатор редактируемого поля на странице 4 заносим идентификатор поля, по которому надавили.page4.какое количество.val=0Ну и переходим на страницу редактирования значения.page page4
  3. Поле отображения уставки выключения вентилятора. Фактически аналогично прошлому полю. Параметры элемента.Код в событии “Touch Press Event”.В этом коде отличие от прошлого лишь в идентификаторе поля.page4.varN.val=1
  4. Кнопка назад. Скопирована с прошлого урока. Параметры элемента.Код в событии “Touch Press Event”.
  5. Тумблер на два положения (“Dual-state button”) – управление светом. Параметры элемента.Значение состояния данного элемента будем считывать из контроллера, исходя из этого элемент глобальный (атрибут “vscope” значение “global”). В качестве режима отображения фона выбран режим картины (атрибут “sta” значение “image”). Картины задаются в атрибутах “pic0” для состояния 0 и “pic1” для состояния 1.
  6. Кнопка (“Button”) – включение фонаря. Параметры элемента.Тут остановимся поподробнее. За нажатиями данной кнопки будем следить из контроллера, для управления фонарём. К сожалению, в Arduino нельзя установить прерывание на получение байта из UART (по крайней мере, стандартами средствами). Исходя из этого было нужно реализовывать запоминание отпускания кнопки и факта нажатия посредством двух переменных (7 и 8). Напрямую к кнопке обращаться не будем, исходя из этого её возможно делать как локальной, так и глобальной (я сделал глобальной на всякий случай). В обработчике нажатия кнопки (“Touch Press Event”) написан следующий код.А в обработчике отпускания кнопки (“Touch Release Event”) таковой.Эти переменные нам пригодятся в блоке отслеживания нажатий в проекте FLProg.

Окно редактирования значений (“page4”, ID=4).Разглядим что в него входит.

  1. Поле редактируемого значения. Параметры элемента.Значение данного поля будем просматривать из контроллера, соответственно делаем его глобальным (атрибут “vscope” значение “global”).
  2. Кнопки ввода значения. Все эти кнопки фактически аналогичны, и отличаются кодом и надписью в обработчике события “Touch Press Event”. При нажатии на одну из этих кнопок к текущему значению поля редактируемого значения добавляется соответствующий знак.Код в событии “Touch Press Event” для каждой из кнопок.“0” evtemp.txt=evtemp.txt+0“1” evtemp.txt=evtemp.txt+1“2” evtemp.txt=evtemp.txt+2“3” evtemp.txt=evtemp.txt+3“4” evtemp.txt=evtemp.txt+4“5” evtemp.txt=evtemp.txt+5“6” evtemp.txt=evtemp.txt+6“7” evtemp.txt=evtemp.txt+7“8” evtemp.txt=evtemp.txt+8“9” evtemp.txt=evtemp.txt+9“.” evtemp.txt=evtemp.txt+.
  3. Кнопка очистки поля. При её нажатии удаляется значение поля.Код в событии “Touch Press Event” evtemp.txt=
  4. Кнопка удаления последнего знака.Код в событии “Touch Press Event” evtemp.txt=evtemp.txt-1Это не задокументированная функция. Она удаляет последний знак в строчке. Я её подсмотрел на одном из видео на сайте производителя. По большому счету я не отыскал фактически никакой информации по работе со строчками на панели.
  5. Кнопка завершения редактирования значения.Нажатие данной кнопки будет отслеживаться на контроллере, так что для неё созданы две переменные (“endPress” и “ endRel”) и в обработчиках событий написан код.Код в событии “Touch Press Event” page4.endPress.val=1Код в событии “Touch Release Event”page4.endRel.val=1
  6. Кнопка отмены редактирования. По нажатию данной кнопки мы на страницу управления.Код в событии “Touch Press Event” page page3

С панелью закончили, переходим к программе FLProg. В ней так же употребляется проект из прошлого урока мало доработанный. Файл проекта находится в архиве, ссылка на что дана в конце поста.Как и в прошлом уроке, я буду показывать готовые схемы плат и говорить, что на них происходит.Плата 7 – «Управление фонарём»Тут всё легко. Блок В46 – «Отслеживание нажатий» (библиотека элементов, папка «Панель Nextion HMI»).

На своем выходе имеет значение соответствующее состоянию отслеживаемой кнопки либо другого элемента имеющего события “Touch Press Event” и “Touch Release Event” на панели. Это значение напрямую прописывается в выход, привязанный к фонарю. Блок параметрируется посредством редактора блоков.

В редакторе блоков нужно выбрать панель, а после этого создадим новую страницу и пропишем на ней нужные элементы. Как это сделать я говорил на прошлом уроке.Обязана окажется такая картина.В качестве переменной нажатия выбираем ту переменную, в которую мы пишем единичку в событии “Touch Press Event” кнопки, а в качестве переменой отпускания, переменную из события “Touch Release Event” кнопки. Плата 8 – «Управление светом».То же весьма несложная плата.

Тут мы считываем положение тумблера посредством блока В47 – «Взять параметр» (библиотека элементов — папка «Панель Nextion HMI» — папка «Элементы»). После этого это значение отправляется конкретно в блок выхода, привязанный к освещению. Блок параметрируется посредством редактора блоков.Для понижения нагрузки на контроллер запрос состояния тумблера будем делать раз в секунду.Плата 9 – «Окончание редактирования параметров».

На данной плате мы будем обрабатывать нажатие кнопки «Готово» на странице редактирования параметров.Посредством блока В48 – «Отслеживание нажатий» (библиотека элементов, папка «Панель Nextion HMI») мы определяем момент нажатия. В редакторе этого блока мы создадим страницу 4 и заполним её интересующими нас элементами.И настроим блок.Посредством блока В49 – “Rtrig” (библиотека элементов, папка «Триггеры») выделим передний фронт сигнала о нажатии кнопки «Готово» и запишем в переменную «Окончание редактирования».

Так же по этому фронту прочтём значение переменной хранящей идентификатор редактируемого поля посредством блока В54 — «Взять параметр» (библиотека элементов — папка «Панель Nextion HMI» — папка «Элементы»). Настройки блока.Полученное значение положим в переменную «Номер редактируемого поля».И по тому же импульсу прочтём конкретно новое значение из текстового поля посредством блока В50 — — «Взять параметр» (библиотека элементов — папка «Панель Nextion HMI» — папка «Элементы»).

Настройки блока.Новое значение из строчка превратим в число в формате Float посредством блока В51 – «Преобразование строчков» (библиотека элементов, папка «Конвертация типов»). Настройки блока.

Число умножим на 10 посредством блока В52 – “MUL(*)” (библиотека элементов, папка «Математика»), поменяем тип на Integer посредством блока В53 – «Преобразование Float в Integer» (библиотека элементов, папка «Конвертация типов») и положим в переменную «Новое значение».Плата 10 — «Обработка результатов редактирования значения»Посредством блока В55 — “Comparator” (библиотека элементов, папка «Сравнение») определяем, какое поле редактировалось, и в зависимости от результата записываем величину из переменной «Новое значение» по импульсу в переменной «Окончание редактирования» в одну из двух переменных, в «Уставка выключения вентилятора х10» либо в «Уставка включения вентилятора х10». Так же по тому же импульсу даём команду панели перейти на страницу управления посредством блока В58 – «Перейти на страницу» (библиотека элементов, папка «Панель Nextion HMI» — папка «Страница»).

Настройки блока.Плата 11 – «Запись значений уставок в панель и EEProm»Посредством блока В59 – «Детектор трансформации числа» (библиотека элементов, папка «Базисные элементы») определяем факт трансформации значения переменой «Уставка включения вентилятора х10». На выходе блока формируется маленький импульс в момент трансформации значения на входе «Value». По этому импульсу происходит запись значения в энергонезависимую память контроллера.

Это происходить при помощи блока В65 — «Запись в EEPROM» (библиотека элементов, папка «EEPROM»). Блок настраивается при помощи редактора блока.Перед тем как записать переменную в EEPROM нужно её в том месте создать. Для этого нажимаем кнопку «Создать» в редакторе блока. Раскрывается окно создания переменной.В нём задаём имя переменной и её тип.

По окончании нажатия кнопки готово блок окажется, привязан к данной переменной.Так же по сигналу об трансформации переменной, её значение делится на константу типа Float равную 10 при помощи блока В61 – “DIV(/)” (библиотека элементов, папка «Математика»), преобразовывается в строчок посредством блока В62 –«Преобразование строчков» (библиотека элементов, папка «конвертация типов»), и отправляется на панель в соответствующее поле посредством блока В63 – «Задать параметр» (библиотека элементов, папка «Панель Nextion HMI» — папка «Элементы»). Настройки этого блока.Логика контроля переменой «Уставка выключения вентилятора х10» подобна, Настройки блоков такие.Блок B65.Блок В68.Сейчас обеспечим чтение уставок из EEPROM в момент старта контроллера.

Для этого засунем новую плату в самый верх проекта для того что бы схема расположенная на ней выполнялась а первую очередь. Для этого выделяем первую замыслу и нажимаем кнопку «Засунуть плату перед выделенной».Назовём новую плату «Чтение уставок из EEPROM». Плата 1.Посредством блока В72 – “Rtrig” (библиотека элементов, папка «Триггеры») мы создаём один маленький импульс при включении контроллера.

По этому импульсу происходит запись в переменные «Уставка включения вентилятора х10» и «Уставка выключения вентилятора х10» значений прочтённых из энергонезависимой памяти. Это происходит при помощи блоков В71 и В73 – «Чтение из EEPROM» (библиотека элементов, папка «EEPROM»). Блоки параметрируются посредством редактора блоков.

Параметры блока В71.Выбор читаемой переменной в EEPROM производится нажатием кнопки «Выбрать». Раскрывается окно выбора переменной.Параметры блока В73.Ну и последняя плата в проекте.Плата 12. «Управление вентилятором»В случае если текущая температура превысила уставку «Уставка включения вентилятора х10» это найдёт блок сравнения В69 и установит триггер В70 в состояние 1, а при понижении температуры ниже уставки «Уставка выключения вентилятора х10» это будет найдено блоком В71, что установит триггер В70 в состояние 0. Состояние триггера подаётся на блок выхода связанного с вентилятором.Архив с исходниками проектов.Видеодемонстрация

Случайная статья:

FLProg + Nextion HMI. Урок 3


Похожие статьи:

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.