flprog меню 3 кнопки
FLProg – Урок второй: Работа с аналоговыми сигналами
Как и в прошлом уроке, проект будем создавать на двух языках FBD и LAD. Только теперь это будет делаться параллельно.
Создаём новый проект.
Для языка FBD создаём новый аналоговый вход, дважды кликнув на пункте «Добавить вход» дерева тэгов или нажав соответствующую кнопку
В открывшемся окне свойств входа ввести имя входа, выбрать аналоговый тип и номер контакта 0
После чего перетащить новый вход из дерева тэгов в область схемы.
Блоки аналогового входа в FLProg на своём выходе выдают величину пропорциональную напряжению на привязанном к ним реальном входе платы. При 0В на входе платы, на выходе блока будет значение 0, а при 5V на входе платы, на выходе блока будет значение 1023.
Затем создаём аналоговый выход.
Для языка LAD перетаскиваем блок «Аналоговый выход контроллера» из библиотеки блоков, и в редакторе свойств, блока (двойной клик на блоке) привязываем его к выходу платы D3
В языке FBD для создания аналогового выхода необходимо дважды кликнуть на пункте «Добавить выход» дерева тэгов или нажать соответствующую кнопку.
В открывшемся окне свойств выхода заполняем имя выхода, выбираем тип ШИМ, и номер выхода D3
После чего перетаскиваем новый выход в рабочую область схемы.
Вообще-то у плат Arduino настоящих аналоговых выходов нет (не считая Arduino Duo, но пока эти платы программой FLProg не поддерживаются). Аналоговые выходы платы работают в режиме ШИМ
В программе FLProg блок аналогового выхода управляет скважностью ШИМ привязанного к нему выхода. При подаче на вход бока значения 0 на выходе паты скважность будет составлять 0%, а при подаче значения 255 – 100%.
Исходя из того что пределы сигнала на выходе блока аналогового входа контроллера составляет 0 — 1023 а пределы допустимого сигнала на входе блока аналогового выхода контроллера составляют 0 – 255 встает вопрос о необходимости приведения их к одним значениям. В этом поможет блок масштабирования.
В языке LAD он находится в папке «Аналоговые блоки» библиотеки элементов.
В языке FBD тот же блок находится в папке «Специальные блоки» библиотеки элементов.
Блок масштабирования пропорционально переносит значение, получаемое на вход, в другой диапазон значений и выдает это значение на выход. Параметры входного и выходного диапазонов значений задаются в свойствах блока. Дважды кликнув на блок, мы можем открыть редактор параметров блока и задать эти значения.
LAD
FBD
Первая плата практически готова. Назовём её «Управление яркостью» и создадим новую, сразу назвав её «Индикатор уровня»
Во второй плате нам так же нужно значение с входа контроллера. В принципе можно ещё раз вытащить вход блока на вторую плату, и использовать его. Но это приведёт к тому, что в процессе выполнения программы в контроллере будет повторно считываться значение с входа. А процедура считывания аналогового сигнала с входа достаточно ресурсоёмкая и длительная. Поэтому мы используем в случае LAD аналоговый соединитель, а в случае FBD – переменную.
В FLProg переменные и аналоговые соединители можно представить как клеммные соединения на плате. С помощью них платы обмениваются значениями и соединятся между собой.
В проекте на языке LAD перетащим блок «Вход аналогового соединителя» на ПЕРВУЮ плату проекта.
Ему автоматически присвоится имя АС1. После чего соединим его вход с выходом блока аналогового входа.
А на вторую плату перетащим блок «Выход аналогового соединителя».
Сделаем на нём двойной клик и в редакторе блока привяжем его к соединителю AC1
В проекте на языке FBD создадим новую переменную, нажав на соответствующую кнопку или сделав двойной клик на пункте «Добавить переменную» в дереве тэгов.
В открывшемся окне редактора блока заполним имя переменной, выберем тип (Integer), и установим значение по умолчанию – 0
После чего перетащим новую переменную сначала в одну плату, а затем в другую. Так же соединим в первой плате вход переменный с выходом блока аналогового входа контроллера.
Поскольку индикатор уровня на 10 значений необходимо чтобы при изменении значения от нуля до максимума, управляющее значение изменялось от нуля до 10. В этом опять поможет блок масштабирования. Вытащим его на вторую плату и настроим следующим образом.
Теперь подключим его вход в случае LAD-а к блоку выхода аналогового соединителя, а в случае FBD к выходу переменной.
LAD
FBD
LAD
FBD
В проекте на языке LAD вытащим на вторую плату 10 реле сравнения и привяжем их выходам, к которым подключён измеритель уровня ( смотри первый урок) и выставим тип сравнения «Больше».
Кликнув правой кнопкой на входе «В» каждого блока реле сравнения вызовем контекстное меню и выберем пункт «Вставить константу». В открывшемся окне редактирования константы оставим тип “Integer” и введём для каждого выхода значение соответствующее логике работы индикатора.
Входы «А» всех блоков реле сравнения соединим с выходом блока масштабирования. Должна получится такая схема.
В проекте на языке FBD вытащим на вторую плату 10 блоков «Comparator» так же настроим на вид сравнения «Больше» (двойной клик на блоке для вызова редактора блоков). Так же как и в LAD-e вставим константы на входы I2 блоков, а входы I1 соединим с выходом блока масштабирования.
После этого создадим 10 цифровых выходов привязанных к выходам платы, к которым подключён измеритель уровня (смотри первый урок) и вытащим их на вторую плату. И соединим каждый со своим компаратором.
Всё – программы готовы, можно компилировать и заливать в контроллер (смотри первый урок)
ARDUINO Обсуждение FLprog и прочих систем визуального программирования
kalobyte
так выглядит схема часов под еспху в флпрог
без единой строчки кода за 5 минут накидывается
все работает отлично
Эдуард Анисимов
kalobyte
с чего ты взял, что ты напишеш не дерьмо? флпрог использует библиотеки, которые выложены на гитхабе
а эти библиотеки могут проверить тысячи людей и сообщить об ошибках или сразу внести изменения
флпрог тестирует куча народу в форуме и сразу сообщает об ошибках автору
я был одним из тестеров этого модуля и тогда еще не было там часовых поясов, потом автор и это доделал
Эдуард Анисимов
Утром, то что я скажу, перенесут в чат писькомерцев. Но я скажу это здесь.
Я вам поражаюсь. У меня сложилось ощущение, что под вашим аккаунтом сидят или три разных человека, или у вас шизофрения. В вашем мозгу сидят три человека.
Один говорит правильные вещи.
Второй иногда сомневается.
Третий несёт пургу.
Так что не доверяйте любым системам проектирования на 100%. В конце концов они вас подведут.
И не надо мне рассказывать про то как вы пользуетесь всем этим и оно ещё ни разу вас не подводило. Просто у вас не было задач при решении которых не нужны бы были знания, а только использование всего этого.
kalobyte
не может, потому что они не генерят код, а это библиотеки представлены в виде графических символов и на флпрог делаются достаточно сложные задачи
это язык фбд, который используется для визуального программирования плк типа сименс, а эти плк стоят на заводах и подобных объектах, а автор флпрог является профессиональным программистом плк и наверное знает в этом толк
смыл в том, что вместо ручного написания кода ты перетаскиваеш кусок готового кода, что один раз был заложен в элемент и визуально соединяеш блоки
это не освобождает тебя от понимания работы алгоритма и ты сам можеш сделать себе блоки из своего кода или готовых библиотек (я уже делал)
я тут на днях столкнулся с задачей автоматизации неких процессов при разработке сцайта с использованием движка шаблонов
раньше я в редакторе кода настроил, чтобы при сохранении файла шаблона у меня генерировался хтмл код этой страницы, потом мне надо было руками обновить страницу в браузере
недавно позвонил заказчик и просил добавить еще пункт в меню, а это значит, что мне надо было открыть и сохранить каждый файл, чтобы они перегенерировались из нового шаблона, где я добавил пункт меню
а там 15 файлов уже и это гиморно и я подумал, что должна быть автоматизации и нашел инструмент и изучил его
теперь я запускаю одну команду в консоли и она запускает веб сервер, обновлятор страниц, генератор страниц из шаблонов
а когда надо залить на хостинг, то я сделал еще одну команду и заливает только изменившиеся файлы
т.е. я избавил себя от тупых задач, которые повторяются и раньше я их делал руками
точно так же флпрог избавляет тебя от многократного написания одного и того же кода руками и опечаток или забытой кавычки или точки с запятой
но требует потратить время на изучение инструмента
PiratFox
Эдуард Анисимов
Arhat109
Блоки пользователей
FM радио RDA5807
Аппаратная часть: 1. Arduino UNO или аналогичный контроллер. 2. FM радио RDA5807 (в соответствии со схемой в приложении). В схеме нужны подтягивающие резисторы 10к на интерфейс I2C по питанию 3.3В и нагрузкой наушники 32 Ом. В качестве антенны я использую просто кусок провода длинной 20 см. Есть много разновидностей микросхем 5807 и схем подключения к …
Диммер
Диммер с включением, выключением и регулировкой. Вход UP — кнопка «вверх», она же кнопка включения. Вход DOWN — кнопка «вниз», она же кнопка выключения. MIN, MAX — диапазон регулировки. При долгом, более 1 секунды, нажатии на кнопку происходит регулировка выхода. «Долгота» нажатия задается в таймере TON. Скорость регулировки — в счетчике G-SM. Автор программы, на …
БП для работы с адресными светодиодами
доделал под себя пользовательский блок (от уважаемого iBells ) для адресных светодиодов на чипе ws2812b. подправил описание, добавил вход enable. Допилил на 10 светодиодов в строчке, вывел RGB каждого светодиода.
БП Nokia 5110, OLED I2C
Блоки автора Slavas слегка изменены и добавлены. Пробуйте, исправляйте! P.S. Вот еще БП для этих дисплеевно под другую библиотеку и шрифт для OLED дисплея — покрупнее!
tm 1637 ДЛЯ ESP8266 и STM32
Блоки Сна
Блоки Позволяют отправить МК (Микроконтроллер) в режим сон. Это очень полезно для устройств работающих от батареек и аккумулятор. Но есть одна проблема отправлять в сон стандартные платы Arduino бесполезно, так как там периферия потребляет больше процессора. То что потребляет энергию не зависимо от режима контроллера: — Светодиоды; — Преобразователь напряжения 7805 (или подобный ) ; …
Совместимые часы для ESP 8266 на базе DS1307
Лень было разбираться почему не пошли часы из стандартного набора, своял на скорую руку новые, En — включает настройку часов. Тестируем
Мгновенный расход — Расходомер воды (Flow Sensor)
Создал блок пользователя, для подключения импульсного выхода от расходомера воды Ду15 — Ду250. Выход подсчета импульсов в блоке не делал. Основная задача блока вычислять мгновенный расход жидкости. Расчет производится согласно формулы взятой из методики поверки расходомеров фирмы Aswega. В блоке предусмотрено 3 выхода (m/c, m3/c, m3/ч) — подключайтесь к любому подходящему. Все блоки подписаны, описание …
ПБ TM1638_LED&KEY и InvertedTM1638_LED&KEY
Пользовательские блоки TM1638_LED&KEY и InvertedTM1638_LED&KEY (функциональные аналоги) для Arduino IDE v.1.8.4: (ПБ InvertedTM1638_LED&KEY инвертирует TM1638_LED&KEY или «переворачивает» вверх тормашками). выводит символьную строку на 8-и разрядный светодиодный индикатор (CommonCathode); при более 8 символов включается безпрерывный эффект прокрутки строки справа- налево (разрешается/запрещается в параметрах пользователя), если прокрутка запрещена (false), — выводится сообщение о превышении размера строки; позволяет …
Блок для работы с HMI Virtuino
Создал блок пользователя, для работы с программой визуализации Virtuino на андроид. Подключение к андроиду через WiFi или БТ, выбирается соответствующим блоком. Добавил блоки приема и отправки текста. Изменил блоки передачи переменных, теперь с блока DV можно сразу получать переменные разных типов. Входами и выходами virtuino управляет напрямую, переделывать библиотеку не вижу смысла (все переменные программа …
FLProg + Nextion HMI. Урок 3
Затем в переменную хранящую идентификатор редактируемого поля на странице 4 заносим идентификатор поля, по которому нажали.
Ну и переходим на страницу редактирования значения.
Окно редактирования значений (“page4”, />
Рассмотрим что в него входит.
Код в событии “Touch Press Event” для каждой из кнопок.
Код в событии “Touch Release Event”
С панелью закончили, переходим к программе FLProg. В ней так же используется проект из прошлого урока немного доработанный. Файл проекта находится в архиве, ссылка на который дана в конце поста.
Как и в прошлом уроке, я буду показывать готовые схемы плат и рассказывать, что на них происходит.
Плата 7 – «Управление фонарём»
Здесь всё просто. Блок В46 – «Отслеживание нажатий» (библиотека элементов, папка «Панель Nextion HMI»). На своем выходе имеет значение соответствующее состоянию отслеживаемой кнопки или другого элемента имеющего события “Touch Press Event” и “Touch Release Event” на панели. Это значение напрямую прописывается в выход, привязанный к фонарю. Блок параметрируется с помощью редактора блоков.
В редакторе блоков необходимо выбрать панель, а затем создадим новую страницу и пропишем на ней необходимые элементы. Как это сделать я рассказывал на предыдущем уроке.
Должна получится такая картина.
В качестве переменной нажатия выбираем ту переменную, в которую мы пишем единичку в событии “Touch Press Event” кнопки, а в качестве переменой отпускания, переменную из события “Touch Release Event” кнопки.
Плата 8 – «Управление светом».
Для снижения нагрузки на контроллер запрос состояния переключателя будем делать раз в секунду.
Плата 9 – «Окончание редактирования параметров».
На этой плате мы будем обрабатывать нажатие кнопки «Готово» на странице редактирования параметров.
С помощью блока В48 – «Отслеживание нажатий» (библиотека элементов, папка «Панель Nextion HMI») мы определяем момент нажатия. В редакторе этого блока мы создадим страницу 4 и заполним её интересующими нас элементами.
Новое значение из строки превратим в число в формате Float с помощью блока В51 – «Преобразование строк» (библиотека элементов, папка «Конвертация типов»). Настройки блока.
Число умножим на 10 с помощью блока В52 – “MUL(*)” (библиотека элементов, папка «Математика»), сменим тип на Integer с помощью блока В53 – «Преобразование Float в Integer» (библиотека элементов, папка «Конвертация типов») и положим в переменную «Новое значение».
Плата 10 — «Обработка результатов редактирования значения»
Плата 11 – «Запись значений уставок в панель и EEProm»
С помощью блока В59 – «Детектор изменения числа» (библиотека элементов, папка «Базовые элементы») определяем факт изменения значения переменой «Уставка включения вентилятора х10». На выходе блока формируется короткий импульс в момент изменения значения на входе «Value». По этому импульсу происходит запись значения в энергонезависимую память контроллера. Это происходить при помощи блока В65 — «Запись в EEPROM» (библиотека элементов, папка «EEPROM»). Блок настраивается при помощи редактора блока.
Прежде чем записать переменную в EEPROM необходимо её там создать. Для этого нажимаем кнопку «Создать» в редакторе блока. Открывается окно создания переменной.
В нём задаём имя переменной и её тип. После нажатия кнопки готово блок окажется, привязан к этой переменной.
Логика контроля переменой «Уставка выключения вентилятора х10» аналогична, Настройки блоков такие.
Теперь обеспечим чтение уставок из EEPROM в момент старта контроллера. Для этого вставим новую плату в самый верх проекта для того что бы схема расположенная на ней выполнялась а первую очередь. Для этого выделяем первую плану и нажимаем кнопку «Вставить плату перед выделенной».
Назовём новую плату «Чтение уставок из EEPROM».
С помощью блока В72 – “Rtrig” (библиотека элементов, папка «Триггеры») мы создаём один короткий импульс при включении контроллера. По этому импульсу происходит запись в переменные «Уставка включения вентилятора х10» и «Уставка выключения вентилятора х10» значений прочитанных из энергонезависимой памяти. Это происходит при помощи блоков В71 и В73 – «Чтение из EEPROM» (библиотека элементов, папка «EEPROM»). Блоки параметрируются с помощью редактора блоков.
Параметры блока В71.
Выбор читаемой переменной в EEPROM производится нажатием кнопки «Выбрать». Открывается окно выбора переменной.
Параметры блока В73.
Ну и последняя плата в проекте.
Плата 12. «Управление вентилятором»
Если текущая температура превысила уставку «Уставка включения вентилятора х10» это обнаружит блок сравнения В69 и установит триггер В70 в состояние 1, а при снижении температуры ниже уставки «Уставка выключения вентилятора х10» это будет обнаружено блоком В71, который установит триггер В70 в состояние 0. Состояние триггера подаётся на блок выхода связанного с вентилятором.