На прошлых уроках (урок 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). Разглядим элементы, находящиеся на странице.
- Легко текстовые поля. Ничего занимательного.
- Поле отображения уставки включения вентилятора. Как я уже писал, панель не может трудиться с дробными числами. Исходя из этого это текстовые поля. Строчок для отображения будем готовить на ардуинке. Параметры элемента.Потому, что значение в это поле будем отправлять с контроллера, делаем его глобальным (атрибут “vscope” значение “global”). При нажатии на это поле будет происходить открытие страницы редактирования значения. Исходя из этого в событии “Touch Press Event” записан следующий код.При нажатии на элемент сперва в поле редактируемого значения на странице 4 заносим текущее значение.page4.evtemp.txt=onV.txtЗатем в переменную хранящую идентификатор редактируемого поля на странице 4 заносим идентификатор поля, по которому надавили.page4.какое количество.val=0Ну и переходим на страницу редактирования значения.page page4
- Поле отображения уставки выключения вентилятора. Фактически аналогично прошлому полю. Параметры элемента.Код в событии “Touch Press Event”.В этом коде отличие от прошлого лишь в идентификаторе поля.page4.varN.val=1
- Кнопка назад. Скопирована с прошлого урока. Параметры элемента.Код в событии “Touch Press Event”.
- Тумблер на два положения (“Dual-state button”) – управление светом. Параметры элемента.Значение состояния данного элемента будем считывать из контроллера, исходя из этого элемент глобальный (атрибут “vscope” значение “global”). В качестве режима отображения фона выбран режим картины (атрибут “sta” значение “image”). Картины задаются в атрибутах “pic0” для состояния 0 и “pic1” для состояния 1.
- Кнопка (“Button”) – включение фонаря. Параметры элемента.Тут остановимся поподробнее. За нажатиями данной кнопки будем следить из контроллера, для управления фонарём. К сожалению, в Arduino нельзя установить прерывание на получение байта из UART (по крайней мере, стандартами средствами). Исходя из этого было нужно реализовывать запоминание отпускания кнопки и факта нажатия посредством двух переменных (7 и 8). Напрямую к кнопке обращаться не будем, исходя из этого её возможно делать как локальной, так и глобальной (я сделал глобальной на всякий случай). В обработчике нажатия кнопки (“Touch Press Event”) написан следующий код.А в обработчике отпускания кнопки (“Touch Release Event”) таковой.Эти переменные нам пригодятся в блоке отслеживания нажатий в проекте FLProg.
Окно редактирования значений (“page4”, ID=4).Разглядим что в него входит.
- Поле редактируемого значения. Параметры элемента.Значение данного поля будем просматривать из контроллера, соответственно делаем его глобальным (атрибут “vscope” значение “global”).
- Кнопки ввода значения. Все эти кнопки фактически аналогичны, и отличаются кодом и надписью в обработчике события “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+.
- Кнопка очистки поля. При её нажатии удаляется значение поля.Код в событии “Touch Press Event” evtemp.txt=
- Кнопка удаления последнего знака.Код в событии “Touch Press Event” evtemp.txt=evtemp.txt-1Это не задокументированная функция. Она удаляет последний знак в строчке. Я её подсмотрел на одном из видео на сайте производителя. По большому счету я не отыскал фактически никакой информации по работе со строчками на панели.
- Кнопка завершения редактирования значения.Нажатие данной кнопки будет отслеживаться на контроллере, так что для неё созданы две переменные (“endPress” и “ endRel”) и в обработчиках событий написан код.Код в событии “Touch Press Event” page4.endPress.val=1Код в событии “Touch Release Event”page4.endRel.val=1
- Кнопка отмены редактирования. По нажатию данной кнопки мы на страницу управления.Код в событии “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. Состояние триггера подаётся на блок выхода связанного с вентилятором.Архив с исходниками проектов.Видеодемонстрация
Случайная статья:
- Обзор навител навигатор для bada
- Nihui toys u807 — неожиданно честный квадрокоптер с интересной камерой для 45$
FLProg + Nextion HMI. Урок 3
Похожие статьи:
-
Хороший сутки. Желаю поведать об одном весьма увлекательном проекте компании ITEAD STUDIO — цветной ЖК дисплей + резистивный сенсор касаний с собственным…
-
Создание проектов в программе flprog. урок первый
В прошлой статье я представил проект FLProg. Сейчас я желаю поведать, как трудиться в данной программе.У программистов в качестве первого урока принято…
-
Flprog — объединение плат arduino в информационное кольцо
Начиная с версии 1.10.5, программа FLProg разрешает объединять пара плат Arduino в кольцевую UART сеть. Сперва разглядим, как это происходит. Платы…