С Новым Годом всех пользователей сайта www.samosdel.ru! После небольшого затишья продолжаю обучение программированию на Ардуино. Друг прислал ссылку на один довольно интересный ресурс по программированию Ардуино в оболочке которая используется при программировании производственных микроконтроллеров типа Fatek и им подобных.
Это визуальное программирование и позволяет обойтись совершенно без написания кода! Т.е. берете блоки, соединяете их между собой, выставляете условия и заливаете в Ардуино! Все, скетч написан! Для получения информации рекомендую посетить сайт http://flprog.ru/ и скачать саму программу.
На этом же сайте есть и подробные видеоуроки, я посмотрел всего лишь один, о подключении дисплея 1602 и часов точного времени. Что скажу- все великолепно за исключением нескольких НО. Но об этом попозже. Итак, мой первый опыт в написании первого урока- blink. Сразу хочу заметить, что хотя я и посмотрел видеоурок но запомнил не все и кое в чем приходилось доходить уже самому.
Урок №1 Базовые элементы программы Flprog Блоки OR, AND, Bounce, XOR
Но об моих ошибках и изысканиях все изложу по ходу дела.
Жмем кнопку с тремя точками и открывается окно с выбором типа контроллера где и выбираю имеющийся у меня Arduino Uno
Наконец открывается главный интерфейс программы:
Пришлось немного потратить время на исследование данного объекта и вот что я выяснил: для подробного описания объекта достаточно перейти на вкладку Информация. Выбираем тип генератора. Тут представлены 3 типа:
жмем дважды Добавить выход и в диалоговом окне выбираем такие данные.
В нем указываем только один параметр- TRUE и жмем Готово. Проверяем еще раз проект.Наконец вылетает надпись что проект корректен! Сохраняем его. Почему то программа сохраняет проект в формате *FLP, что для тех кто пишет музыку на компьютере программой Frutti Loops несколько «нехорошо», т.к. эти программы используют одни и те же расширения. По крайней мере у меня попытка загрузки файла в FLProg выглядит вот так.
Теперь давайте посмотрим что же скомпилировала нам данная программа? Смотрим листинг:
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
pinMode(13, OUTPUT);
>
bool _isTimer(unsigned long startTime, unsigned long period )
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) =(startTime + period));> else =(4294967295-startTime+period));>
>
Столько наворочала FLProg что разобраться «с лету» практически невозможно! Жмем Вгрузить (почему именно так написано- непонятно), скетч заливается и Arduino начинает бодренько мигать светодиодом по нашему скетчу!
Спасибо за внимание.
2 thoughts on “ Программирование без программирования! ”
totuin :
Постараюсь ответить на Ваши вопросы (я автор программы)
1. Как Вы понимаете сравнивать блинк на delay с результатом работы FLProg не корректно, поскольку блинк кроме мигания светодиодом ничего делать не может. Он останавливает выполнение программы на время паузы и горения. Для того что бы делать что то ещё необходимы программные таймеры. Отсюда и глобальные переменные (а где ещё хранить время включения/выключения светодиода).
Вводный Урок для Начинающих по программе Flprog
2. Программа расчитанна для пользователей не знакомых с языком C поэтому не очень важно что она генерит не очень читаемый скетчь. В программе даже есть режим когда прошивка заливается из среды FLProg напрямую в контроллер без открытия Arduino — IDE. Вы же не изучаете HEX файл и не правите в нём битики. Ну и здесь так же.
3.Используя FLProg не обязательно вообще изучать C. И это могут подтвердить пользователи программы. Если Вы зайдёте на форум программы — Вы увидите это. С появлением возможности написания пользовательских блоков на С, те пользователи которые разбираются в языке С могут написать практически любые блоки, для любого оборудования. Ну а те кто не знает языка, используют их. Кстати обратите внимание, что достаточно много пользователей уже знают язык С, но всё равно пользуются FLProg, поскольку удобнее.
4. Смотри пункт 2.
Извините если обидел. Я нисколько не умаляю Ваших трудов, способностей и стремления. Я просто выдал свою точку зрения на данную программу и не призываю всех и каждого переходить чисто на С. Я привел пример моей работы в данной программе и показал что мне понравилось и НЕ понравилось. Принять или не принять данную точку зрения- это дело лично каждого.
На п.1 скажу так- можно обойтись и без delay, вообще мой друг очень плотно подсел на МК и на 45 тиньке такие вещи творит- я просто диву даюсь. Оказывается 32 кБ- это столько места что хватит еще 95 винду поставить! Отвечу на Ваш п.2- я согласен с тем что для тех кто не знает языка это просто грааль, но давайте копнем глубже.
Если начинать вообще с нуля то придется объяснять что такое блоки (их у вас очень много, хотя так и должно быть, на самом деле задач может быть много и библиотека тоже должна быть соответствующей), как они будут между собой работать и т.д. Согласитесь что на понятие и освоение тоже уйдет достаточное количество времени?
Получается что мы тут буквально половыми органами меряемся- у кого лучше. Хотя забываем что параметров куча и объективно оценить… Да есть здоровские плюхи навроде синхронизации времени на DS1307 и т.д. Я согласен с многими Вашими доводами и обиду на мое высказывание что я такой программой пользоваться не буду.
Вы же старались, делали её наподобие многих промышленных программ, я скажу прямо- молодец. Это без шуток, потому что сам работал (и в какой то степени до сих пор работаю)программистом и знаю какой это тяжелый труд. Не побоялся угрохать столько сил и времени на разработку и отладку такой программы НО. Как я и писал выше, я хочу знать КАК работает программа. И не искать ошибки в блоках.
Как говорится сам написал, сам оптимизировал и т.д. Тот же мой друг сейчас старается вовсю снизить энергопотребление МК и дошел практически до значений саморазряда литиевых батарей! Так что вопрос энергопотребления сейчас первоочередной и только потом уже идет функционал. Не в обиду было сказано и если обидел то прошу прощения но- это мое мнение. Спасибо за внимание, понимание и программу.
Источник: samosdel.ru
FLProg – альтернативная среда программирования Arduino. Описание проекта
В предыдущем посте я рассказал о предыстории появления проекта FLProg. Сейчас я хочу поподробнее рассказать о проекте и его состоянии на сегодняшний день.
Основной целью проекта является включение в круг пользователей плат Arduino людей незнакомых с программированием. Это возможно благодаря опыту промышленного программирования, который накапливался годами производителями промышленных контроллеров.
Проект состоит из двух частей. Первая часть это десктоп приложение FLProg представляющее собой графическую среду программирования плат Arduino. Во вторых, это сайт FLProg.ru, с помощью которого члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы, ну и найти необходимую информацию по работе с приложением.
Начнем по порядку.
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров.
Описание языка FBD
FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков.
Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Описание языка LAD
Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях.
Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами.
Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Я немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются обертками, над библиотеками, предназначенными для работы с ними.
Проект в FLProg представляет собой набор плат, на каждой, из которой собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Так же каждую плату можно свернуть (для экономии места на рабочей зоне, когда работа над ней закончена), и развернуть. Красный индикатор в наименовании платы указывает на то, что в схеме платы есть ошибки.
Вид окна программы в режиме языка FBD
Вид окна программы в режиме языка LAD
Схема каждой платы собирается из функциональных блоков в соответствии с логикой работы контроллера. Большинство функциональных блоков имеют возможность настройки, с помощью которой их работу можно настроить в соответствии с необходимыми в данном конкретном случае требованиями.
Так же для каждого функционального блока есть развернутое описание, которое доступно в любой момент и помогает разобраться в его работе и настройках.
При работе с программой пользователю нет необходимости заниматься написанием кода, контролем за использованием входов – выходов, проверкой уникальности имен и согласованностью типов данных. За всем этим следит программа. Так же она проверяет корректность проекта целиком и указывает на наличие ошибок.
Для работы с внешними устройствами создано несколько вспомогательных инструментов. Это инструмент инициализации и настройки часов реального времени, инструменты для чтения адресов устройств на шинах OneWire и I2C а так же инструмент для чтения и сохранения кодов кнопок на ИК пульте. Все определённые данные можно сохранить в виде файла и в последующем использовать в программе.
Источник: habr.com
FLProg — система визуального программирования плат Arduino
В настоящее время в мире начался бум по использованию микроконтроллеров в различных самоделках и стартапах. Действительно, цены на микроконтроллеры упали, а возможности их постоянно растут. Да и наши друзья, китайцы, научились изготавливать периферию к ним, и продают её к тому же по смешным ценам. Но вот с программированием микроконтроллеров всё не так радужно…
С чего всё началось и как развивалось
С самого момента появления микропроцессоров развитие принципов работы с ними идет по пути роста абстракции. Первый этап представлял программирование непосредственно в машинных кодах. Программирование было сложным, долгим и требовало очень специфичного склада ума. Поэтому программистов было очень мало.
Но человек существо ленивое, а лень, как известно, двигатель прогресса. Придумали первый уровень абстракции – ассемблер. Писать программы стало проще и веселее. Количество программистов возросло. Но все равно ассемблер не очень сильно отличался от машинных кодов.
Поэтому появился следующий уровень абстракции. Языки высокого уровня. Основной целью этих языков была возможность объяснить машине, что от нее хотят, на языке максимально приближенном к человеческому. Это позволяло заниматься программированием людям с менее специфичным складом ума. Поэтому с развитием языков высокого уровня количество программистов росло, и соответственно росло количество полезных программ, которые они создавали.
Как дела обстоят сейчас
Конечно, для начала работы непосредственно с контроллером требуется определенная подготовка. То есть, необходимы программатор, настроенная среда для программирования на компьютере, ну и, естественно, знание языка программирования. Кроме того, требуется умение в работе с паяльником, разработке печатных плат, знания в электротехнике и электронике. Так что порог вхождения в область создания собственных устройств на микроконтроллерах остается высоким.
Кроме того, для такой работы требуется сочетание навыков, которые достаточно редко встречаются вместе. Программисты редко дружат с паяльником, а электронщики не часто являются программистами. Для программистов проблему решили созданием платы Arduino, которая позволяет собирать устройства без использования инструментов.
Для электронщиков и электриков все хуже. До последнего времени для того, чтобы создать свое устройство с применением микроконтроллера, у них было два пути. Либо самим изучать язык программирования «С», либо просить помощи у программиста. Оба пути не самые лучшие.
Для того что бы стать программистом, необходим определенный склад ума, не всегда совместимый с опытом чтения электрических схем. А знакомого программиста может не оказаться под рукой.
В то же время давно существуют среды программирования адаптированные под обычного инженера – электронщика, ну или просто электрика. Я имею в виду среды программирования промышленных контроллеров. ПЛК. Они позволяют создавать программное обеспечение для контроллеров на языках FBD и LAD. Собственно говоря, как таковыми языками они не являются.
Это, скорее, графические среды для рисования принципиальных или логических схем.
FBD (Function Block Diagram)
– графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) – это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.).
Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.
Ladder Diagram (LD, LAD, РКС)
– язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Язык ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях.
Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами.
Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина – если ток течет; ложь – если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары – со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Такой подход оказался очень удобным для легкого вхождения в разработку систем АСУ инженеров-электриков и электронщиков. Разрабатывая проекты установок, они могли легко привязать работу этих установок к алгоритмам работы контроллера.
В обслуживании этих установок на объекте также лучше, когда существующий обслуживающий персонал может легко проверить работу системы АСУ, найти проблему. И при этом нет необходимости вызывать по каждому пустяку программиста из «Центра». И это подход себя оправдал. На сегодняшний день почти все системы промышленной автоматики созданы с помощью таких средств разработки.
Такая среда разработки есть у Siemens, ABB, Schneider Electric… да и практически у всех производителей ПЛК. Казалось бы, идеальное решение для любителей самоделок. Но, как всегда есть «но». Все эти среды программирования привязаны к промышленным контроллерам определённого производителя. И цены на эти контроллеры мало вдохновляют.
Очень редко какой семейный бюджет позволит приобрести контроллер ценой в несколько десятков тысяч рублей.
Зато платы Arduino идеально подходят для самодельщиков и кулибиных, на которых наша страна всегда была, есть и будет богата. Но, опять «но». Программируются эти платы на языке C. Для большинства этих умнейших людей, с очень прямыми руками, растущими из положенного места, язык С. это китайская азбука.
Они могут придумать, нарисовать, собрать, отладить и запустить сложнейшие схемы, но If, For, Case, Void и т.п. — это не для них. Конечно, можно почитать инструкции в интернете, поиграться какое-то время, помигать светодиодом с помощью примера. Но для более серьезного применения необходимо детальное изучение языка. А зачем им это?
Они не собираются быть профессиональными программистами. У них другой путь. Они что-то придумали. Да, это проще и красивее собрать с помощью микроконтроллера, но становится для этого программистом, потратив месяцы на изучение языка? Нет, конечно.
Собирают по старинке, попроще, конечно, но в своей области.
На основании всех этих выкладок и был создан проект FLProg. Основная идея проекта – совместить принципы промышленного программирования с дешевизной и удобством Arduino. Проект предлагает новый уровень абстракции с довольно смелым заявлением –
Чтобы программировать микроконтроллеры не обязательно знать языки программирования!
В результате получился инструмент, позволяющий создавать свои проекты на Arduino любому человеку, знакомому с электротехникой и электроникой, позволяющий создать свое изделие с использованием данных плат.
Проект состоит из двух частей.
Первая часть -это десктоп-приложение FLProg, представляющее собой графическую среду программирования плат Arduino.
Во-вторых, это сайт FLProg.ru, с помощью которого члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы, ну и найти необходимую информацию по работе с приложением.
Начнем по порядку
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров. При создании программы я постарался максимально использовать наработки программистов Siemens, ABB, Schneider Electric в их средах программирования.
Я немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются «обертками» над библиотеками, предназначенными для работы с ними. Программа работает на компьютере под управлением OS Windows. Но энтузиастами из сообщества пользователей программы была опробована возможность запуска программы по ОС Linux. Этому посвящена статья на сайте проекта, которую можно прочитать по ссылке:
При создании нового проекта вам предложат выбрать язык программирования, на котором вы будете создавать проект, и контроллер, на котором этот проект будет реализован.
Вот список плат Arduino, поддерживаемых программой на сегодняшний день:
В скором времени ожидается пополнение в семействе поддерживаемых плат. Arduino Due уже в пути, а плату Intel Galileo (gen.2) обещал предоставить руководитель лаборатории интернета вещей при Санкт-Петербургском Государственном университете телекоммуникаций им. проф. М.А. Бонч-Бруевича. Со временем, по мере приобретения, планируется поддержка плат основанных на контроллерах STM.
Проект в FLProg представляет собой набор плат, на каждой из которых собран законченный модуль общей схемы. Для удобства работы каждая плата имеет наименование и комментарии. Так же каждую плату можно свернуть (для экономии места в рабочей зоне, когда работа над ней закончена) и развернуть. Красный индикатор в наименовании платы указывает на то, что в схеме платы есть ошибки.
![]() |
Вид окна программы в режиме языка FBD. |
![]() |
Вид окна программы в режиме языка LAD. |
В правой части рабочей зоны расположена библиотека элементов. В схему элементы переносятся простым перетаскиванием. При двойном клике по элементу будет показана информация о нём.
Вот список блоков доступных на сегодняшний день.
FBD:
Базовые элементы
Специальные блоки
Триггеры
Таймеры
Счетчики
Математика
Сравнение
Com –порт
Send
SendVariable
ReceiveVariable
Переключатель
Моторы
Часы реального времени
[Alarm]
[GetTime]
[SetTime]
Дисплеи
Дисплей на чипе НD44780
Подсветка дисплея на чипе НD44780 I2C
Блок декодирования семисегментного индикатора
Строки
Датчики
[Ultrasonic HC-SR04]
[DHT11, DHT21, DHT22]
[DS18x2x]
[IR Ressive] [BMP-085]
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертация типов
Преобразование строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор
Дешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатура
Пьезодинамик
EEPROM
Запись в EEPROM
Чтение из EEPROM
Коммуникации
SendVariableFromCommunication
RessiveVariableFromCommunication
WebServerPage
WebClient
LAD:
Базовые блоки
Контакт
Катушка
Защита от дребезга
Выделение переднего фронта
Специальные реле
Двустабильное реле
Реле времени
Генератор
Реле сравнения
Алгебра
Аналоговые блоки
Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соединителя
Выход аналогового соединителя
Скоростной счетчик
CommPort
Передача в ComPort
Передача переменной через Comm port
Прием переменной через Comm port
Моторы
Сервомотор
Шаговый двигатель
Часы реального времени
Получить данные
Будильник
Установка времени
Дисплеи
Дисплей на чипе HD44780
Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семисегментного индикатора
Строки
Датчики
Ультразвуковой дальномер HC-SR04
Датчик температуры и влажности DHT11 (DHT21, DHT22)
Датчик температуры DS18x2x
IR Ressive
BMP-085
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертирование типов
Конвертация строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор
Дешифратор
Чтение бита
Запись бита
Разное
Матричная клавиатура
Пьезодинамик
EEPROM
Запись в EEPROM
Чтение из EEPROM
Коммуникации
Блок отправки переменной через коммуникации
Прием переменной через коммуникации
Страница Web сервера
Web клиент
В настоящее время ведется разработка функциональных блоков для работы с трехосевым гироскопом, люксометром, и другими датчиками и сенсорами. Также ведется работа над организацией обмена данными через блютуз, радиоканал, и интерфейс RS-485. В дальнейших планах. разработка SCADA-системы для организации интерфейса систем, разработанных в программе FLProg на персональном компьютере или графических дисплеях.
Список периферийного оборудования, поддерживаемого программой, доступен на сайте проекта по ссылке:
![]() |
Датчики температуры и влажности DHT11, DHT21, DHT22. |
Для части оборудования в разделе на сайте присутствуют обзорные статьи, облегчающие понимание применения его в программе.
В верхней части рабочей зоны расположен список тэгов (переменных и входов выходов) (FBD) или установленного оборудования (LAD). Тэги или оборудование переносятся на схему простым перетаскиванием.
![]() |
![]() |
После завершения работы над проектом производится его компиляция. После компиляции автоматически откроется программа «Arduino 1.5.7» с загруженным скетчем вашего проекта. В программе «Arduino IDE 1.5.7» вам необходимо будет указать номер COM порта, к которому подключен ваш контроллер, выбрать его тип, и произвести заливку скетча в контроллер. Подробнее о программе «Arduino IDE 1.5.7» можно почитать на сайте Arduino.ru.
Где скачать FLProg?
В рамках проекта существует сайт http://flprog.ru. Основная задача сайта – дать возможность пользователям скачать последнюю версию программы, узнать о нововведениях и изменениях.
Скачать программу можно без регистрации на сайте, но для зарегистрированных пользователей функционал сайта заметно расширяется. Регистрация очень проста и требует только подтверждения электронной почты. Никаких других данных при этом вводить не требуется.
На странице загрузки программы всегда доступны две версии: инсталлятор и портативная версия, не требующая установки. Если возможно, то я также выкладываю файл обновления значительно меньшего размера, позволяющий обновить предыдущую версию.
Также на странице загрузки можно посмотреть список нововведений и исправленных ошибок для данной версии и перейти в архив предыдущих версий.
Источник: www.rlocman.ru