Как перевести скетч в ide в flprog

Обновлено: 06.07.2024

FLProg - программирование ARDUINO для непрограммистов.

Друзья, администрация нашего форума попросила меня рассказать о программной среде в которой я программирую ARDUINO. Докладываю, это небезизвестная

. Если вы слышите это название впервые, то наберитесь терпения, я кратенько не умею, ибо желание поделиться знаниями обратно пропорционально их уровню.

Это совсем не секрет, что даже в такой упрощенной среде, как ARDUINO IDE, не говоря уж о чистом C++, я не считаю себя программистом. Нет, конечно, когда-то я зачитывался уроками Джереми Блума, восхищался тонкостями программирования от Саймона Монка, покупал книги, смотрел уроки, и в целом все понятно, но это как знать аккорды и писать музыку - вещи безмерно далекие друг от друга. Ведь программирование - это творчество где недостаточно просто вызубрить всякие там команды, операторы, функции и т.д., а необходимо именно мыслить кодом, видеть в этих странных наборах знаков всю картину как шахматист видит партию, виртуозно владеть всеми возможностями которые дает нам язык программирования, да еще при этом не запутаться в синтаксисе. И тут, увы, лично мне кодинг дается не так легко как хотелось бы.

И таких как я тысячи. Чтож делать нам сирым? И вот тут на подмогу приходит такая среда программирования как FLProg. Это визуальная среда, где, чтобы заставить бездушную железяку по имени ардуино выполнять твои желания, совсем не обязательно быть программистом. Эта среда так и анонсируется - визуальное программирование для непрограммистов. Собственно это всё, что достаточно знать. Переходите по ссылке выше, читайте учебные материалы, смотрите ролики и замирайте в предвкушении открывающихся возможностей.

Тем не менее, я допускаю, что меня сейчас читают совсем новички, а это значит, что требуются некоторые пояснения, что я, в благодарность к создателю этой программы с удовольствием сделаю. Устраивайтесь поудобнее, начнем издалека.

Живет в славном городе Новосибирске инженер АСУ ТП Сергей Глушенко. Кто не знает, что такое это самое АСУ ТП, то сейчас "кратенько" расскажу, ибо для понимания работы с FLProg неплохо знать всю подноготнюю. Это система автоматизированного управления производственным оборудованием, сердцем которой является программируемый логический контроллер (ПЛК) - так называемый, средний уровень. Контроллер получает с датчиков (нижний уровень), подключенных к его входам, сигналы, обрабатывает их, и на их основе, согласно заложенного в него алгоритма, выдает сигналы на свои выходы, к которым подключены исполнительные механизмы. Таким образом, правильно запрограммированая система работает быстро, четко и слаженно, радуя низкими затратами и высокими прибылями своих владельцев.

Производителей оборудования для АСУ ТП много. В целях совместимости оборудования, в этой сфере практически всё стандартизированно и унифицированно. В том числе, согласно международного стандарта IEC 61131, для программирования ПЛК существует пять языков программирования. Каждый из них был рожден и отточен в муках практики на заре становления промышленной автоматизации. Каждый производитель оборудования ставит перед собой цель продать как можно больше своего оборудования, а для этого хочешь-не хочешь, а надо постараться сделать работу со своим оборудованием максимально простой, понятной, так, чтобы персонал мог быстро обучиться, в том числе и программированию их ПЛК. Поэтому, в приведенном мной выше стандарте, только два языка текстовых, а три, как бы это не казалось забавным, графических.

Один из них, язык LD (Ladder Diagram) - очень похож на то как рисуются релейные схемы. И это не спроста, ведь он и создавался для обучения программированию тех специалистов, которые раньше работали только с релейными схемами, и которым пришлось столкнуться с переоборудованием своего производства на более серьезную систему автоматизации.

А второй язык, это FBD (Function Block Diagram) - будет легко понятен тем, кто умеет читать схемы цифровой электроники. Попробую объяснить. Знаете три столпа цифровой техники - логические элементы И, ИЛИ, НЕ? Так вот это и есть функциональные блоки, только самые простые. Можем взять функциональные блоки посложнее - триггер, генератор или счетчик. Знакомые слова? А бывают функциональные блоки и совсем сложные, например, ПИД-регулятор. Грубо говоря, функциональный блок это программный код, созданный производителем, но вам в этом коде разбираться не надо, вам дают уже готовую деталь конструктора. Все функциональные блоки схожи тем, что у них есть вход/входы и выход/выходы. Комбинируя их между собой, соединяя выходы одних блоков со входами других, вы в конечном итоге можете создать любой алгоритм, а ведь именно это нам и нужно от программируемого контроллера, не так ли?

Вернемся к Сергею Глушенко. Сергей занимается тем, что создает конфигурации для промышленных ПЛК. По всей видимости для этого он привык использовать язык FBD, и это не удивительно, я думаю, это самый популярный язык для ПЛК. Но вот однажды Сергей обратил свое внимание на платформу ARDUINO: казалось бы тоже контроллер, те же входа-выхода, а поди ж ты, программировать надо кучей текста. Вот было бы круто, если бы кто-то умный создал для ардуинки функциональные блоки, а ты только знай собирай их как конструктор, а при компиляции скетча весь этот графический конструктор программа сама переведет в удобоваримый для ардуино код. Ну и согласно народной мудрости "хочешь сделать хорошо - сделай сам", Сергей приступил к созданию своей FLProg.

Взялся Сергей за дело всерьез. Программа им постоянно обновляется, постоянно обновляются функциональные блоки, появлятся блоки для работы со всеми популярными шильдами, датчиками и модулями. Все больше производителей оборудования для ARDUINO стремятся включить в FLProg блоки для работы с их оборудованием. Кроме того, в программе есть возможность добавлять пользовательские блоки - блоки созданные пользователями программы, и благодаря этому на сегодняшний день существует поддержка практически всех популярных устройств, подключаемых к ардуино, и этот процесс не прекращается - настолько пользователям в России, да и во всем мире, приглянулась эта среда программирования. Сообщество FLProg растет не по дням, а по часам. Прямо сейчас, благодаря мощной команде инициативных пользователей, программа обретает новую жизнь - полностью обновился сайт, переехав с простенького хостинга, появился структурированный

. Не всё наполнение на момент публикации этой статьи еще завершено, но объем информации постоянно растет.

А, начиная с версии 3.0 в пакет с программой была интегрирована SCADA. Вы только вдумайтесь, теперь у нас есть простой и понятный способ визуализировать на компьютере работу устройства на базе нашей трудяги ардуинки. Браво, Сергей! Низкий поклон Вам и Вашей команде!

А знаете что самое приятное? Программа до-сих пор бесплатна! Да, Сергей ее создал по принципу "от человека - людям". Но если программа вам понравилась, вы всегда можете ее поддержать: финансово или своими личными наработками. Это уже не просто творение одного человека, это уже философия программирования и сообщество единомышленников, что поверьте мне, стоит того, чтобы поддержать этот проект.

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


В предыдущей статье я представил проект FLProg. Теперь я хочу рассказать, как работать в этой программе.

У программистов в качестве первого урока принято использовать “Hello World”, у программистов микроконтроллеров помигать светодиодом, ну а у электриков и электронщиков собрать схему управления контактором. Поскольку основными пользователями программы как раз они и являются, собирать на первом уроке будем как раз данную схему.

Стандартная схема управление контактором


Заменим эту схему контроллером Ардуино. Оставим в стороне вопросы помехозащищённости и экранировки. Эта тема для отдельного и очень большого разговора. Наша цель — создать в программе FLProg соответствующую логику. Поэтому накидаем тестовую схему подключения.


Роль контактора в данной тестовой схеме выполняет светодиод «Контактор». Теперь попробуем запрограммировать контроллер.
Запускаем программу FLProg, нажимаем кнопку «Создать новый проект».


Откроется окно выбора контроллера и языка программирования проекта.


Для создания проекта можно использовать любой из двух языков программирования (FBD и LAD) являющимися стандартами в области программирования промышленных контроллеров. В этом уроке мы создадим проекты на обоих языках.

Обратите внимание, что после создания проекта на одном из языков сменить его будет невозможно!

При нажатии кнопки выбора контроллера откроется соответствующее окно, в котором будут представлены поддерживаемые программой платы.



В данном списке выбираем нужный контроллер.

Выбранный для проекта контроллер можно сменить в любой момент.

Для начала создадим проект на языке LAD.

Ladder Diagram (LD, LAD, РКС) – язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на специалистов по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.


  1. Основное меню программы
  2. Дерево проекта (в данном уроке оно не используется, его рассмотрим в последующих уроках)
  3. Дерево установленного оборудования. В нём представлено оборудование (промежуточные реле, реле времени, генераторы…), которое используется в проекте. В новом проекте в нём присутствуют только входы и выходы контроллера.
  4. Библиотека блоков. В ней находится оборудование, которое возможно применить в проекте. В данном уроке нас будет интересовать только папка «Базовые блоки»
  5. Область схемы, в которой и будет собственно рисоваться схема. Схема в FLProg представляет собой набор плат с оборудованием.

Для начала вытащим на область схемы контакты кнопок. Это возможно сделать двумя путями.

В результате на схеме появится УГО (условно – графическое обозначение) контакта. В случае перетаскивания его из дерева установленного оборудования контакт окажется сразу привязанным к цифровому входу – выходу платы. Если блок контакта был вытащен из библиотеки элементов, он будет абстрактным контактом без какой – либо привязки.


И любом случае контакты необходимо параметрировать. Для этого делаем двойной клик на контакте. Открывается окно редактирования блока.


В первую очередь на закладке «Параметры» выбирается привязка контакта к выходу платы (если контакт выбран в библиотеке блоков).
После этого появляются новые параметры. «Зашита от дребезга» и «Подтягивающий резистор». Поскольку в соответствии со схемой кнопки подключены к GND, ставим галочку «Подтягивающий резистор». «Зашиту от дребезга» можете не устанавливать, в этой схеме в ней нет необходимости.


На закладке «Надпись к блоку» пишем название кнопки, что бы оно отображалось на схеме.


На закладке «Информация» можно посмотреть информацию о данном устройстве.


Таким же способом вытаскиваем остальные кнопки и контакты реле перегрузки.


После этого перетаскиваем из библиотеки блоков устройство «Катушка». Так же двойной клик на нём и открывается окно параметрирования катушки.


  • Дважды кликнув на контакт и выбрав нужное состояние в редакторе блока
  • Кликнуть правой кнопкой по контакту и в выпавшем меню выбрать нужный пункт.


Ну и теперь можно начать рисовать схему в соответствии с типовой схемой пускателя. Соединения рисуются путём наведения курсора на начальный вывод элемента, нажатия левой кнопки, и, не отпуская кнопки, соединение тянется до второго соединяемого вывода. Если при приближении курсора с идущим за ним соединением вывод окрашивается в оранжевый цвет — значит, это соединение к нему можно подключить


Для создания блок-контакта контактора можно перетащить контакт К1 из дерева установленного оборудования на схему.


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


Таким образом, первая плата закончена. Назовем её «Плата управления». Для того что бы присвоить название плате делаем двойной клик по её заголовку.


Откроется окно редактирования заголовка платы.


Зелёный кружок в заголовке обозначает, что плата корректна и ошибочных блоков на ней нет. В случае наличия таких блоков он будет красным.
Теперь создадим ещё одну плату, нажав на кнопку «Добавить плату»


На ней будем управлять выходами платы Ардуино. Для этого перетаскиваем на вторую плату четыре катушки из библиотеки блоков и привязываем их к выходам платы Ардуино. Должна получиться такая картинка


Катушки с привязанными выходами платы соотносятся так: при включении катушки в проекте на выходе платы Ардуино будет 5В при выключении 0
Затем перетаскиваем из дерева установленного оборудования необходимые контакты (два контакта промежуточного реле, и контакт входа реле перегрузки), после чего рисуем необходимую схему и называем плату «Управление выходами».


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


Загрузка в контроллер для обоих языков одинакова, так что мы рассмотрим её в конце урока, а пока создадим аналогичный проект на языке FBD.

FBD (Function Block Diagram) – графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.

Создадим новый проект на языке FBD.


Поля 1, 2, 4, 5 в окна программы аналогичны полям на языке LAD. Поле 3 здесь содержит дерево тэгов (входов, выходов и переменных). Здесь нет предварительно созданных входов, их нужно создавать при необходимости. Для создания нового входа нужно нажать кнопку «Добавить вход» или дважды кликнуть по пункту «Добавить вход» в дереве тэгов.


Откроется окно создания входа


Выбираем цифровой, появляются новые параметры. Записываем название входа, выбираем нужный вход платы Ардуино, и ставим галочку «Включить подтягивающий резистор».


Таким же образом добавляем все необходимые входы


Затем создаем переменную, отвечающую за состояние контактора. Для этого либо нажимаем на кнопку «Добавить переменную» либо делаем двойной клик на пункте «Добавить переменную» в дереве тэгов.


Открывается окно настройки переменной


Выбираем тип переменной Boolean и заполняем параметры


Блоки входа на языке FBD соответствуют реальным выходам платы, следующим образом. Когда на реальном входе 0 – на выходе блока – False, когда на входе платы 5B на выходе блока True.
Для запоминания состояния контактора используем RS триггер. Его надо перетащить из папки «Триггеры» библиотеки блоков на рабочее поле схемы.


RS-триггер, или SR-триггер — триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы.
При подаче единицы на вход S (от англ. Set — установить) выходное состояние становится равным логической единице. А при подаче единицы на вход R (от англ. Reset — сбросить) выходное состояние становится равным логическому нулю.
При логическом нуле на обоих входах на выходе удерживается последнее состояние. При логических единицах на обоих входах в случае RS триггера выход устанавливается в логический ноль, а в случае SR триггера в логическую единицу.

Для того что бы включился контактор необходимо подать на вход S сигнал со входа «Пуск». Для этого перетаскиваем из дерева тэгов вход «ПУСК» на рабочую область схемы. Если вспомнить о том, что при нажатии кнопки Пуск на вход платы подаётся логический 0, то понятно, что необходимо инвертировать сигнал с кнопки. Для этого наведём курсор на вход S триггера и кликнем правой кнопкой мыши. В открывшимся меню в пункт выберем «Инвертировать»


После чего соединяем вход S триггера с выходом блока входа «Пуск». Создание соединения происходит, так же как и в языке LAD.


Остановка контактора происходит если:
Нажата кнопка «СТОП» (лог.1 на блоке входа «Стоп» ) ИЛИ нажата кнопка «АВАРИЙНЫЙ СТОП» (лог.1 на блоке входа «Аварийный стоп» ) ИЛИ сработало тепловое реле (лог.1 на блоке входа «КТ1» ). Значит, нам нужен блок ИЛИ с тремя входами.

Перетаскиваем его из библиотеки блоков из папки «Базовые блоки».


По умолчанию у блока ИЛИ два входа. Для того что бы добавить третий, выделяем блок и нажимаем кнопку «Добавить вход».


Переносим необходимые входы из дерева тэгов и соединяем со входами блока ИЛИ. А выход блока ИЛИ соединяем с входом R триггера.
Затем забираем из дерева тэгов переменную «Состояние контактора» и выход триггера соединяем со входом этой переменной. Должна получиться такая схема:


На этом закончим первую плату и назовём ее, как и на LADе – «Плата управления».
После чего создадим новую плату и сразу назовём её «Управление выходами».
Далее создадим выходы платы в соответствии со схемой. Для этого надо кликнуть на кнопку «Добавить выход» дли сделать двойной клик на пункте «Добавить выход» в дереве тэгов. Выходы создаём цифрового типа.



Перетащим на вторую плату созданные выходы, вход КТ1 и переменную «Состояние контактора» Затем соединим блоки в соответствии со схемой. Необходимые воды блоков инвертируем.


Обратите внимание, что при перетаскивании на схему блоков входа, выхода или переменной изначально у них нет входов или выходов. Они появляются при подведении курсора к блоку в месте их будущего расположения.
С созданием схем закончили. Теперь надо залить программу в контроллер. Для этого нажимаем кнопку «Компилировать проект».


В результате открывается окно Arduino-IDE с открытым скетчем, в который была преобразована созданная схема.


В программе Arduino-IDE выбирается плата, порт и производится заливка в контроллер скетча.


Приветствую всех посетителей нашего портала, сегодня у нас обзор бесплатной программы под названием FLProg. Узнал я о ней из письма одного из наших посетителей, который попросил уделить ей внимание и по возможности поучаствовать в ее развитии. Собственно сегодня я ее скачаю и попробую написать пару демонстрационных схем, попутно комментируя и выделяя как плюсы программы, так и её минусы. Сразу оговорюсь, что я успел прочесть пару статей о данной программе и немного просмотреть ее официальный сайт, но саму программу я скачиваю впервые. Так же я поверхностно знаком c FBD и LAD, делали большой проект автоматизации завода лет шесть назад, правда программировали контроллеры на STL и SCL, но для общего развития и, понимая, я читал так же и об других, таких как FBD, LAD, GRAPH 7.

Теперь немного поговорим о самой программе. FLProg - это альтернативная среда разработки, эдакая обертка над Arduino IDE позволяющая программировать и задавать логику микроконтроллеру на двух дополнительных языках: FBD и LAD. Оба этих языка стали популярными благодаря старшим братьям микроконтроллеров - промышленным контроллерам от фирмы Siemens, гиганта в мире промышленных контролёров, заслуженно занимающий одно из лидирующих мест. Собственно автор программы частенько на это ссылается, будь то скриншоты контроллеров взятых с официального сайта Сименса или иконками, взятыми из программы Step7.

Немного информации из википедии (Хотя бы бегло прочтите, лишним не будет).

    – Графический язык программирования - Язык релейной (лестничной) логики.

На этом со вступлением мы закончим и перейдем к скачиванию и установке программы.

Скачивание и Установка

И так, переходим на официальную страницу скачивания программы. И видим мы тут первый ее плюс. Программа кроссплатформенная. Здесь есть несколько вариантов ОС, это Linux и Wondows. К сожалению дистрибутива, для Mac OS - нет, но мне она и не нужна (Минус не ставлю, но некоторым это не понравиться). Скачаем мы с вами портативную версию под Windows (Второй плюс, наличие портативной версии, порой удобней таскать все с собой, ну например на флэшке). Переходим по нескольким страницам, после чего попадаем в Яндекс.Диск и наконец скачиваем программу (Первый минус, в место прямых ссылок игра в прятки, дизайн сайта и вложенность запутывает). И так, после того как мы скачали последнюю версию (FLProg 2.2) и распаковали ее куда нам надо, приступим к ее изучению.

Первый запуск

После запуска нас приветствует главное окно программы с минимальным интерфейсом.

FLProg - Главное окно

В главном окне мы видим стандартное меню, и несколько кнопок (Открыть, закрыть, сохранить проект и тд).

Создадим свой первый проект. И по традиции ардуинщиков это будет стандартный Blink (моргание 13-м светодиодом).

Нажимаем кнопку "Создать новый проект" и в открывшемся окне выбираем FBD и Arduino UNO.

FLProg - Новый проект

Проект создан, можно приступать.

Пример "Blink" на FBD

FLProg - FBD

Что мы тут видим. Окно поделенное на несколько оконных блоков. Предназначение левого мне неизвестно, но вот два центральных и правое выглядят знакомо.

  • Центральное верхнее - настройка портов и создание дополнительных переменных.
  • Центральный нижний - само рабочее поле, где мы будем размещать наши блоки.
  • Правый - Список готовых блоков.

Первым делом мы настроим наши порты, а точнее только порт под номером 13 на котором распаян светодиод на плате Arduino UNO.

Кликаем в верхнем центральном блоке по надписи "Выходы" - "Добавить выход". В открывшемся окне выбираем "Тип" - Цифровой, "Номер контакта" - 13, "Имя" - любой текст (в примере - pin13). Все остальные поля игнорируем.

После того как мы нажмем на кнопку "Готово" и окно закроется, в списке появиться выход с наименованием "pin13". Перетаскиваем надпись на рабочее поле.

Вот что в итоге у нас получилось.

FLProg - Добавление порта

Ищем в списке готовых блоков нечто похожее на таймеры или хотя бы delay. Таких "таймеров" оказалось два, и оба являются эдакими обертками с дополнительным функционалом.

Блок "Timer" в разделе "Таймеры" - который как мы понимаем из названия и должен быть таймером, на самом деле оказалось реле задержки включения/выключения, использующее для своей работы таймер но не как не являющееся им. За это однозначно минус, наименования не соответствует работе блока.

Последний блок "Generator" в разделе "Таймеры" уже боле менее понятен и как раз впишется в наш пример. Предназначение блока создавать импульсы с заданной длительностью и паузой. Этот блок и будет включать и выключать наш светодиод.

Перетаскиваем блок в рабочее поле и соединяем его выход "Q" с блоком порта "pin13".

FLProg - Блок Generator

Теперь нам надо зайти в настройки блока генератора. И в настройках выбрать:

Тип генератора: Симметричный мультивибратор. (Вам не кажется, что подобные названия заставляют задуматься и как минимум прочитать мануалы?).

Длина импульса: Константа - Миллисекунды - 1000.

И тут мы видим, что блок поменял свое наименование с G-S на GS-M. То есть авторы решили не делать кучу блоков, а по возможности объединить их, и изменив тип блока мы по сути получили совсем другой блок работающий иначе чем первоначальный. Это еще один минус. Надо читать мануалы и настраивать блоки (Хорошо, что у программы мануалы есть и довольно таки неплохие, за это плюс). Я понимаю, что авторы решили упростить и не плодить кучу блоков, но это затруднило, например их поиск, и заставляет читать мануалы, настраивать, и тестировать так ли блок работает, как я его настроил.

После того как мы настроили блок, осталось лишь подать на вход блока генератора единицу, чтобы он работал сразу и всегда.

Кликаем правой кнопкой мыши на входе "EN" блока G-SM и выбираем пункт "Вставить константану". В открывшемся окне выбираем "True" и жмем "Готово".

FLPog - FBD Blink

Все, на этом наш пример Blink закончен, осталось лиши загрузить все в Arduino нажав на кнопку "Компилировать проект". После чего откроется Arduino IDE (Почему-то старая версия 1.6.3) в которой мы увидим созданный FLProg скетч. Грузим скетч в Ардуинку и проверяем.

Ну и давайте теперь посмотрим, какой Си код у нас в итоге получился.

На первый взгляд у нас тут какая-то не отформатированная каша, но это только на первый взгляд.

На самом деле программа не обязана делать отформатированный Си код, ведь основная из ее задач - дать не программистам и людям, не знающим Си, программировать Ардуино, и форматирование тут не важно. Но если бы генерируемый код был бы отформатирован, я бы однозначно поставил плюс.

Теперь давайте отформатируем его вручную и разберемся что там к чему.

Как вы видите из отформатированного кода выше (с моими комментариями), код получился в целом хороший. Лишнего мало. Таймер асинхронный. Проверка на переполнение переменной. Ну и собственно все работает.

Конечно, написав на Си мы могли бы сделать код и по проще и по быстрее, но это не главное, главное то, что мы сделали все это просто перетащив пару блоков и задав несколько настроек. А это значит, что программа справляется со своею задачей, дать не программистам, возможность программировать и задавать логику микроконтроллерам.

На этом обзор программы FLProg закончен, но я обязательно продолжу его через неделю, ведь мы попробовали отнюдь не все ее возможности и языки.

Но уже сейчас я могу сделать выводы, что программа достойна внимания, ее стоит скачать и посмотреть. Ну а окончательные выводы мы сделаем в следующей статье.

Интерфейс программы FLProg

Монитор COM-порта служит для работы с портом RS-232 компьютера. Кнопка служит для обновления списка активных COM-портов.

Область управления портом

  • Выпадающий список служит для выбора номера порта из списка активных COM-портов;
  • Выпадающий список служит для установки скорости работы с выбранным COM-портом;
  • Кнопка служит для соединения с выбранным COM-портом;
  • Кнопка служит для отключения от COM-порта;
  • Кнопка служит для очистки области отображения принятой информации.

Область отображения принятой информации

В поле «ASCII» информация, принятая с COM-порта, отображается в виде кодировки ASCII. В полях «DEC», «HEX», «BIN» принятая информация отображается соответственно в десятичном, шестнадцатеричном и двоичном форматах.

Область передачи информации

Интерфейс программы FLProg

В поля ввода информация, предназначенная для передачи в COM-порт, вводится в соответствующем формате. Кнопки под полями ввода служат для отправки данных из соответствующего поля.

Запись кодов кнопок ИК-пульта

Интерфейс программы FLProg

Работа с инструментом «Запись кодов кнопок ИК-пульта» состоит из четырёх шагов:

  • Шаг 1 – выбор контроллера (платы Arduino);
  • Шаг 2 – выбор вывода платы, к которому подключен ИК-приёмник;
  • Шаг 3 – загрузка скетча в контроллер. После загрузки Arduino IDE необходимо закрыть;
  • Шаг 4 – чтение кодов кнопок ИК-пульта

Интерфейс программы FLProg

После появления первой записи в поле отображения ( 7 ) в выпадающем списке «Пульт» ( 2 ) появится название этого пульта. Если вы ранее уже записывали данные с этого пульта, то можно загрузить ранее сохранённые коды кнопок из файла с помощью кнопки «Загрузить» ( 8 ). После окончания сканирования кнопок необходимо отключиться от порта с помощью кнопки и сохранить полученные данные, нажав на кнопку «Сохранить» ( 9 ). Для сохранения всех данных полученных с помощью любого из инструментов можно использовать один и тот же файл.

Шины данных

Сканирование шины 1-Wire

Интерфейс программы FLProg

Работа с инструментом «Сканирование шины 1-Wire» состоит из четырех шагов:

  • Шаг 1 – выбор контроллера (платы Arduino)
  • Шаг 2 – выбор вывода платы, к которому подключена шина 1-Wire
  • Шаг 3 – загрузка скетча в контроллер. После загрузки Arduino IDE необходимо закрыть
  • Шаг 4 – сканирование шины 1-Wire

Необходимо выбрать COM-порт, к которому подключена плата, и нажать кнопку соединения () ( 1 ). Через некоторое время в поле вывода информации появятся записи о подключенном к шине оборудовании. В поле «Адрес»( 2 ) будет указан адрес устройства. В поле «Тип» ( 3 ) – тип устройства, а в поле «Текущее значение»( 4 ) – значение параметра, передаваемое устройством. С помощью двойного клика по необходимому устройству можно вызвать окно заполнения поля «Комментарий»( 5 ).

После окончания сканирования шины необходимо отключиться от COM-порта с помощью кнопки ( 1 ) и сохранить полученные данные, нажав на кнопку «Сохранить» ( 6 ). Для сохранения всех данных, полученных с помощью любого из инструментов, можно использовать один и тот же файл.

Сканирование шины I 2 C

Работа с инструментом «Сканирование шины I 2 C» состоит из четырёх шагов:

  • Шаг 1 – выбор контроллера (платы Arduino)
  • Шаг 2 – После выбора контроллера будет показана подсказка о подключении устройства к контроллеру. Необходимо проверить правильность подключения устройства.
  • Шаг 3 – загрузка скетча в контроллер. После загрузки Arduino IDE необходимо закрыть
  • Шаг 4 – сканирование шины I 2 C.

Необходимо выбрать COM-порт, к которому подключена плата, и нажать кнопку соединения () ( 1 ). Через некоторое время в поле вывода информации ( 2 ) появятся адреса устройств, подключенных к шине I 2 C. С помощью двойного щелчка по необходимому устройству можно вызвать окно заполнения комментария к устройству.

После окончания сканирования шины I 2 C, необходимо отключиться от порта с помощью кнопки и сохранить полученные данные, нажав на кнопку «Сохранить» ( 3 ). Для сохранения всех данных, полученных с помощью любого из инструментов, можно использовать один и тот же файл.

Читайте также: