Altinkaya: турецкие корпуса для РЭА
РадиоЛоцман - Все об электронике

Flowcode и анимация

Matrix Multimedia Flowcode 6

Программа Flowcode – это среда разработки программ для микроконтроллеров, использующая графический язык программирования.

Использование графики в программировании осуществляется давно. Блок-схему программы легче «увидеть» и понять, чем программу, описанную обычным языком.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Блок-схема из wiki
Пример блок-схемы из Wiki

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

Любая современная среда разработки кроме редактора и компилятора должна иметь средства отладки программы. Поскольку язык программирования был выбран графический, отладочные средства логично было использовать графические. А наглядность этим отладочным средствам придавали элементы анимации. Вот пример работы отладчика в Flowcode 3:

Отладка в Flowcode 3
Пример работы отладки в Flowcode 3

Выключатель, соединенный с выводом B0, можно «нажать» с помощью мышки, тогда светодиод, соединенный с выводом A0 микроконтроллера, зажигается. Согласитесь, что такая отладка программы нагляднее, чем отслеживание состояния портов.

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

Размещение дополнительных компонентов
Панель для дополнительных компонентов в Flowcode 4

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

Кроме того, в этой версии появилась группа электромеханических устройств на инструментальной панели дополнительных компонентов:

Механические компоненты
Группа электромеханических компонентов и шаговый двигатель

Теперь при отладке программы можно было видеть вращение шагового двигателя.

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

Группа компонентов в Flowcode 5
Группа электромеханических компонентов в Flowcode 5

Среди новшеств сегодняшней версии программы Flowcode 6 не только наличие двух панелей, системной и панели управления, но и трехмерный вид компонентов, и развитые средства анимации. В примерах к программе можно найти ряд реализаций:

Анимация в Flowcode 6
Пример анимации в Flowcode 6

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

Вот фрагмент программы, управляющей анимацией:

Фрагмент программы
Фрагмент программы в Flowcode 6

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

Пример анимации
Пример еще одной анимации

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

Средства анимации Flowcode 6 оказываются разнообразны, но о том, как сделать первый шаг, пойдет речь далее.

Создаем новый проект. На системной панели выбираем сферу, которую добавляем на панель:

Добавление объекта
Добавление объекта на системную панель

Используем панель свойств, чтобы дать имя объекту:

Ввод имени объекта
Задание имени нового объекта

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

Чтобы изменить имя по умолчанию, достаточно щелкнуть в окне Handle и изменить имя на новое.

Некоторые объекты появляются на системной панели с размерами, которые очень малы (или слишком велики). Можно изменить эти размеры, используя в панели свойств параметры раздела World size: Wi…, He…, De…

На инструментальной панели дополнительных компонентов в разделе Machatronics выберем элемент Animator:

Выбор элемента управления
Выбор элемента управления объектом

Из вариантов размещения следует выбрать размещение на системной панели. Варианты размещения появляются после щелчка по кнопке (слева) или после щелчка правой клавишей мышки по названию элемента.

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

Изменение размеров
Придание объектам удобного для работы вида

Если новый элемент трудно выделить, чтобы изменить его размеры, можно выбрать его на панели свойств. И в панели свойств элемента изменить его размеры.

Объект в панели свойств
Выбор объекта на панели свойств

Кроме размеров следует задать подключение этого элемента к ранее созданной сфере, используя свойство Target. Полезно и заменить имя по умолчанию на имя удобное для запоминания, например animator_ball. После указания цели для аниматора на системной панели появится стрелка, соединяющая эти два элемента.

Объединение объекта и управления
Соединение объекта и средства управления

Создадим макрос, который назовем move_ball.

В основной программе добавим элемент Simulation (взяв его с панели программных компонентов) и выберем для симуляции элемент:

Закладка симуляции
Состав закладки симуляции после появления новых компонентов

Основная программа выглядит следующим образом:

Основная программа
Первоначальный вид основной программы

А макрос выглядит так:

Макрос
Первоначальный вид макроса

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

Пробный запуск программы
Первый запуск программы

Осталось разобраться в параметрах настройки, которые были выбраны в элементах Simulation произвольно. Можно прочитать о настройках в файле подсказки, можно опробовать разные настройки, используя созданную программу.

Определившись с движением созданного шара, можно модифицировать основную программу и макрос:

Модификация программы
Модификация программы

Переменная input создана для выключателя, который можно добавить на панель управления (чтобы не мешать анимации на основной панели). Теперь, запустив программу на симуляцию, можно наблюдать за движением шара, а выключателем остановить симуляцию. То есть, анимация связана с событиями, на которые реагирует микроконтроллер.

Используя возможности анимации Flowcode 6, можно создать иллюстрацию технологического процесса. А если использовать тот факт, что программа Flowcode работает с COM-портом компьютера, если через интерфейсную микросхему подключить к нему второй, реальный микроконтроллер, снабженный датчиками, то получится хорошее наглядное пособие полезное, скажем, в школе. А радиолюбителям создание такого наглядного пособия поможет в освоении работы с микроконтроллерами, да и просто должно быть интересно. 

Подготовил: Гололобов В.Н. по заказу Радиоежегодник

T-electron
Россия и страны СНГ
TEFLCST4 Flowcode Pic Home Editionпо запросу
Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • СПАСИБО, Владимир Николаевич, за цикл статей по Flowcode 6! Заинтересовала возможность анимации в симуляции :) Вопрос: сохраняется ли возможность работы программы через СОМ-порт по прошествии 30-и дней для демо-версии Flowcode 6 ?
  • Добрый день, Сергей! Моя версия Flowcode 6 уже давно на пенсии. Вы не пробовали использовать нуль-модемный кабель для проверки, если Ваша копия программы тоже достигла возраста дожития?
  • Доброго здоровья, Владимир Николаевич! А я пока в размышлении устанавливать на ПК Flowcode 6-демо, или нет. Опыта работы с ней нет вообще, поэтому не уверен, что смогу сразу составить корректный алгоритм для тестирования работы СОМ-порта. Может Ваш Flowcode 6-пенсионер ещё тряхнёт стариной ? :)
  • Нужно посмотреть, не уволил ли я Flowcode 6 - кризис! А для проверки СОМ-порта с нуль модемным кабелем можно, наверное, поступить так: В бесконечном цикле отправлять символ в COM, проверять буфер приёма. Если символ есть, устанавливать один из выводов в 1, если нет, в 0. Может быть, добавить паузу. Теперь, если выводы RxTx СОМ-порта замкнуты, при симуляции вывод МК должен быть в 1. При размыкании выводов RxTx кабеля вывод МК должен переходить в 0. Наверное, так можно проверить. С уважением, Владимир Гололобов.
  • Здравствуйте! Я только начал обучаться тому, как использовать контроллеры для решения моих настоящих и будущих задач. Мне посоветовали программу FlowCode, чтобы я мог научиться составлять алгоритмы. Режим анимации мне тоже интересен. Я работаю киповцем и хочу попробовать смоделировать на ПК работу теплового узла. У меня есть в распоряжении Программируемый бейсик-контроллер [url]http://www.cqham.ru/tbcgroup/[/url] Вопрос: Есть ли возможность во FlowCode обеспечить следующие параметры коммуникационного интерфейса RS232: бодовая скорость, bps 57600 количество бит данных 8 количество стоповых бит 1 бит чётности отсутствует согласование потока аппаратное?
  • Добрый день, Александр! Ответ - скорее да, чем нет. Функция настройки RS232 позволяет изменить скорость обмена данными, включая ту, что интересует Вас. И формат данных, похоже, Ваш. Но управление потоком можно включить или не включать. Судя по предыдущим версиям, речь идёт об аппаратном контроле, но этого не следует из описания во Flowcode 6 (или я не нашёл этого). С уважением, Владимир Гололобов.
  • Здравствуйте, Владимир Николаевич! Я установил программу FlowCode 6. В обсуждении Вы написали, что можете ли Вы прислать проект этого действия для программы FlowCode 6? Я пока сам не смогу этого сделать. Заранее спасибо.
  • Добрый день, Александр! Вот файл примера. Все настройки в свойствах RS232. Реакция выделена в подпрограмму, которую можно менять, приведя в соответствие с Вашими намерениями. С уважением, Владимир Гололобов.
  • Добрый вечер, Владимир Николаевич! Спасибо за тестовый проект, скачал и попробовал, всё работает. В программе FlowCode открыл проект, подключил переходник usb - com, установил драйвера для Windows 8, далее замыкал контакты 2 и 3, светодиод загорался. Сейчас изучаю, как работает программа FlowCode, после попробую найти и понять подпрограмму в Вашем проекте, который Вы прислали. Узнал много новых слов :confused: Следующим этапом планирую подключить бейсик-контроллер, на котором есть 4 светодиода, а во FlowCode сделаю 4 тумблера, которые будут управлять этими светодиодами. Извините за просьбу, сделайте, пожалуйста, и такой проект для моего обучения.
  • Добрый день, Александр! Поскольку изначально речь шла об анимации, я посоветовал бы сделать наоборот - использовать четыре кнопки у внешнего контроллера, а в программе Flowcode, в подпрограмме (макросе), организовать реакцию на нажатие кнопок. Позже можно эту подпрограмму переписать, включив анимацию. Вы согласны? С уважением, Владимир Гололобов.
  • Добрый день, Владимир Николаевич! Спасибо Вам за предложение. Я, конечно, согласен. Сейчас изучаю программирование бейсик-контроллера. Пока еще не знаю, как объяснить FlowCode, что нажал определенную кнопку и загорелся определенный светодиод, буду думать. С уважением, Александр.
  • Александр, Вам не нужно ничего объяснять Flowcode. Бейсик-контроллер должен определить, какая кнопка нажата, и в зависимости от нажатой кнопки 1 или 2 (например) отправить через USART, надеюсь, он есть, в СОМ-порт символы. Для простоты пусть "1" и "2". Эти символы должна принимать программа Flowcode. В Вашей программе Flowcode Вы читаете приёмный буфер СОМ-порта. Если прочитан принятый символ "1", то зажигается, скажем, светодиод на выводе RA0, если "2", то предыдущий гаснет, а зажигается RA1 и т.д. И, заметьте, что МК в программе Flowcode, собственно, не работает, а работает сама программа. С уважением, Владимир Гололобов.
Полный вариант обсуждения »