Первые шаги: Arduino IDE
У всех новичков, впервые взявших в руки Arduino, часто возникают одни и те же вопросы: «Как загрузить программу на Arduino? Нужен ли для этого программатор? Что такое Arduino IDE?». На этом небольшом уроке мы разберемся с этими вопросами раз и навсегда.
Начнем со второго вопроса, ответ на который прост: никакого так называемого программатора не нужно.
Контроллер Arduino отличается от «голых» микроконтроллеров тем, что он адаптирован для загрузки программ через обычный USB-порт компьютера! Исключение составляют версии Arduino Pro Mini, где требуется специальное внешнее устройство USB-UART мост, которое, впрочем, всё так же просто подключается по USB.
1. Что такое Arduino IDE?
Arduino IDE — это приложение, которое позволяет составлять программы в удобном текстовом редакторе, компилировать их в машинный код, и загружать на все версии Arduino. Приложение является полностью бесплатным, а скачать его можно на официальном сайте сообщества Arduino:
https://www.arduino.cc/en/Main/Software
Arduino IDE можно установить на любую операционную систему: Windows, Linux, Mac OS X. Для скачивания нужной версии необходимо выбрать её в правой колонке, и на следующей форме нажать кнопку «JUST DOWNLOAD».
2. Установка Arduino IDE
После того как дистрибутив программы успешно загружен с сайта, попробуем установить Arduino IDE на компьютер. Рассмотрим установку на примере версии для Windows. Как и любое другое приложение, установка состоит из нескольких шагов. Первый шаг — лицензионное соглашение. Жмем «I Agree».
Второй шаг — выбор опций установки. Если вы устанавливаете Arduino IDE первый раз, ставим все галки и жмем «Next».
Следующий шаг — выбор целевой папки. Здесь также можно все оставить по-умолчанию.
Когда скопируются все основные компоненты Arduino IDE, инсталлятор предложит вам установить драйвера для Arduino. Соглашаемся.
В общем то, сразу после установки драйверов, инсталлятор сообщит о завершении процедуры установки Arduino IDE. Можно приступать к изучению возможностей редактора, и пробовать загружать программы на контроллер.
3. Интерфейс Arduino IDE
Окно редактора можно условно разделить на 6 блоков, как на картинке:
Первый блок — это меню программы. Через меню можно получить доступ ко всем функциям Arduino IDE.
Второй блок — панель иконок, на которой размещены часто используемые функции. Слева направо:
- галочка — проверить программу на ошибки;
- стрелочкой вправо — загрузить программу на Arduino;
- страничка — создать новую программу;
- стрелочка вверх — открыть ранее сохраненную программу;
- стрелочка вниз — сохранить программу на компьютер;
- лупа — открыть окно монитора порта.
Третий блок — файлы проекта. Каждая вкладка означает один из файлов проекта. Самые простые программы могут состоять только из одного файла.
Четвертый блок — поле текстового редактора. Здесь составляется код программы.
Пятый блок — поле для отображения служебных сообщений. Например, уведомлений об успешной загрузке программы.
Наконец, шестой блок — окно отображения информации о ходе компиляции и об ошибках в программе.
4. Загрузка первой программы
Попробуем открыть готовый пример программы, которая заставит Arduino мигать светодиодом. Для этого выберем в меню:
Файл/ Примеры/ Basics.01/ Blink
В результате откроется еще одна копия редактора, примерно с такой программой:
Следующее, что необходимо сделать — подключить Arduino через свободный USB порт. Обычно, после подключения новой Arduino к компьютеру, должно пройти несколько минут, чтобы устройство автоматически определилось. Должно появиться уведомление об успешной установке устройства.
Затем настроим правильный тип платы в Arduino IDE. Для этого в меню выбираем пункт:
Инструменты/ Плата/ …
Появится список разных типов Arduino, из которого мы выбираем нужный. Этот урок посвящен Arduino Uno, так что выбираем этот вариант. Кстати, в новых версиях Arduino IDE сменилось названия для классической Arduino Uno, теперь оно выглядит так: Arduino/Genuino Uno
Теперь выбираем порт. Каждый раз, когда вы подключаете новую Arduino к компьютеру, Windows выделяет ей COM-порт с отдельным номером. Для того, чтобы выбрать правильный порт откроем пункт меню:
Инструменты/ Порт/ …
Если вы новичок, и не практикуете подключение периферийных устройств через виртуальный COM-порт, то в этом списке появится всего одна запись. Это может быть «COM1» или «COM3», или любой другой номер.
Последний шаг — загружаем программу на Arduino. Для этого жмем иконку со стрелочкой вправо. По завершению этой процедуры, в строке сообщения появится надпись: «Загрузка завершена» (на более ранних версиях — «Вгрузили»).
Заключение
После того как мы загрузили программу на Arduino, она начинает свое независимое существование. Каждый раз, когда мы подаем питание на наш контроллер, эта программа будет автоматически запускаться с самого начала.
Теперь, когда стало понятно как загружать программы, можно приступить к составлению своей первой программы. О том, как это сделать, читаем урок: «Управление светодиодом«.
Изменено: 23 Фев, 2016 02:41
Источник: http://robotclass.ru/tutorials/arduino-ide/
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 а так же инструмент для чтения и сохранения кодов кнопок на ИК пульте.
Все определённые данные можно сохранить в виде файла и в последующем использовать в программе.
Список функциональных блоков существующих на сегодняшний день в языке FBD
[XOR] [AND] [OR]
[Bounce]
Специальные блоки
[Scale]
Тригеры
[SR] [TT] [RS]
[Rtrig]
Таймеры
[Generator]
[Timer]
Счетчики
[Counter]
[SpeedCounter]
Математика
[SUM(+)] [MUL(*)] [DIV(/)]
[SUB(-)]
Алгебра
[SIN] [COS] [TAN] [ABS] [SQ] [SQRT] [MIN] [MAX] [POW]
[RANDOM]
Сравнение
[Comparator]
Com — Порт
Send SendVariable
ReceiveVariable
Переключатель
[SWITCH] [MUX]
[DMS]
Моторы
ServoMotor
StepMotor
Часы реального времени
[Alarm] [GetTime]
[SetTime]
Дисплеи
Дисплей на чипе НD44780 Подсветка дисплея на чипе НD44780 I2C
Блок декодирования семи сегментного индикатора
Строки
Сложение строк
Датчики
[Ultrasonic HC-SR04] [DHT11, DHT21, DHT22] [DS18x2x] [IR Ressive]
[BMP-085]
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертация типов
Преобразование строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор Дешифратор Чтение бита
Запись бита
Разное
Матричная клавиатура
Список функциональных блоков существующих на сегодняшний день в языке LAD
Контакт Катушка Защита от дребезга
Выделение переднего фронта
Специальные реле
Двустабильное реле Реле времени Генератор
Реле сравнения
Алгебра
SIN COS TAN ABS MAX MIN SQ SQRT POW
RANDOM
Аналоговые блоки
Масштабирование Математика Счетчик Аналоговый переключатель Переключатель много к одному Переключатель один ко многим Аналоговый вход контроллера Аналоговый выход контроллера Вход аналогового соеденителя Выход аналогового соединителя
Скоростной счетчик
ComPort
Передача в ComPort Передача переменной через ComPort
Прием переменной через ComPort
Моторы
Сервомотор
Шаговый двигатель
Часы реального времени
Получить данные Будильник
Установка времени
Дисплеи
Дисплей на чипе HD44780 Блок управления подсветкой дисплея на чипе HD4480 I2C
Блок декодирования семи сегментного индикатора
Строки
Сложение строк
Датчики
Ультразвуковой дальномер HC-SR04 Датчик температуры и влажности DHT11 (DHT21, DHT22) Датчик температуры DS18x2x IR Ressive
BMP-085
SD карта
Запись переменной на SD карту
Выгрузка файла с SD карты
Конвертирование типов
Конвертация строк
Преобразование Float в Integer
Микросхемы расширений
Расширитель выводов 74HC595
Операции с битами
Шифратор Дешифратор Чтение бита
Запись бита
Разное
Матричная клавиатура.
В следующих публикациях я расскажу о сайте проекта и перспективах развития проекта.
Источник: http://www.pvsm.ru/arduino/73602
Arduino PLC на BDF и LAD — Мир науки,техники,медицины и образования © первая научно-техническая коммерческая социальная сеть
В настоящее время в мире начался бум по использованию микроконтроллеров в различных самоделках и стартапах. Действительно, цены на микроконтроллеры упали, а возможности их постоянно растут. Да и наши друзья, китайцы, научились изготавливать периферию к ним, и продают её, к тому же, по смешным ценам. Но вот с программированием микроконтроллеров всё не так радужно…
С чего всё началось и как развивалось
С самого момента появления микропроцессоров развитие принципов работы с ними идет по пути роста абстракции. Первый этап представлял программирование непосредственно в машинных кодах. Программирование было сложным, долгим и требовало очень специфичного склада ума. Поэтому программистов было очень мало.
Но человек существо ленивое, а лень, как известно, двигатель прогресса. Придумали первый уровень абстракции – ассемблер. Писать программы стало проще и веселее. Количество программистов возросло. Но все равно ассемблер не очень сильно отличался от машинных кодов.
Поэтому появился следующий уровень абстракции. Языки высокого уровня. Основной целью этих языков была возможность объяснить машине, что от нее хотят, на языке максимально приближенном к человеческому.
Это позволяло заниматься программированием людям с менее специфичным складом ума.
Поэтому с развитием языков высокого уровня количество программистов росло, и соответственно росло количество полезных программ, которые они создавали.
Как дела обстоят сейчас
Конечно, для начала работы непосредственно с контроллером требуется определенная подготовка.
То есть, необходимы программатор, настроенная среда для программирования на компьютере, ну и, естественно, знание языка программирования.
Кроме того, требуется умение в работе с паяльником, разработке печатных плат, знания в электротехнике и электронике. Так что порог вхождения в область создания собственных устройств на микроконтроллерах остается высоким.
Кроме того, для такой работы требуется сочетание навыков, которые достаточно редко встречаются вместе. Программисты редко дружат с паяльником, а электронщики не часто являются программистами. Для программистов проблему решили созданием платы Arduino, которая позволяет собирать устройства без использования инструментов.
Рис.1 Различные платы 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, с помощью которых члены сообщества пользователей программы могут пообщаться между собой, узнать последние новости проекта, скачать последнюю версию программы и найти необходимую информацию по работе с приложением.
Начнем по порядку
Программа FLProg позволяет создавать прошивки для плат Arduino с помощью графических языков FBD и LAD, которые являются стандартом в области программирования промышленных контроллеров. При создании программы яавтор постарался максимально использовать наработки программистов Siemens, ABB, Schneider Electric в их средах программирования.
Еще автор немного расширил классический функционал этих языков, добавив функциональные блоки, отвечающие за работу с внешними устройствами. Они являются «обертками» над библиотеками, предназначенными для работы с ними. Программа работает на компьютере под управлением OS Windows, Linux-32 и Linux-64
При создании нового проекта вам предложат выбрать язык программирования, на котором вы будете создавать проект, и контроллер, на котором этот проект будет реализован.
Вот список плат Arduino, поддерживаемых программой на сегодняшний день:
Arduino DiecimilaArduino DuemilanoveArduino LeonardoArduino LilypadArduino Mega 2560Arduino MicroArduino MiniArduino Nano (ATmega168)Arduino Nano (ATmega328)Arduino Pro MiniArduino Pro (ATmega168)Arduino Pro (ATmega328)Arduino UnoIntel-Galileo
Источник: https://industriya.com/de/posts/90-programmiruem-plc-na-arduino-s-pomoschyu-fbd-i-lad.html
Установка среды разработки для Arduino
Для разработки программ для Arduino используется официальная среда разработки IDE Arduino. Среда разработки позволяет создавать программы на языке C++, компилировать и загружать программу в контроллер через USB. Среда поддерживает все виды плат Ардуино. Для некоторых плат так же имеются дополнительные возможности настройки.
Последнюю версию среды разработки всегда можно скачать с официального сайта по ссылке https://www.arduino.cc/en/Main/Software. Для Windows необходимо выбрать вариант скачивания Windows Installer (exe файл). На следующей странице вам предложат внести определенную сумму в поддержку проекта.
Если вы не хотите на данный момент поддерживать проект, просто нажмите кнопку JUST DOWNLOAD.
Установка IDE не должна вызвать трудностей. Необходимо запустить скаченный файл и следовать инструкции установщика.
Прочитав лицензионное соглашение, нажимаем кнопку I Agree (Я согласен). Переходим к окну выбора устанавливаемых компонентов.
Оставляем выбранные компоненты по умолчанию и нажимаем кнопку Next (Далее). Переходим к окну выбора каталога установки.
Каталог установки рекомендуется оставить по умолчанию, нажимаем кнопку Install (Установить). Начнется процесс установки, который может занять несколько минут.
По окончании установки программы появится окно с предложением установить драйвер контроллера Arduino. Соглашаемся и нажимаем кнопку Установить
Установка завершается, нажимаем Close (Закрыть).
При установке IDE драйверы для USB устанавливаются автоматически, и в большинстве случаев с вашей стороны больше ничего не надо делать. Однако, в некоторых случаях стандартные драйверы могут не подойти к вашей плате, особенно если она не оригинальная. В этом случае вам необходимо самостоятельно разыскать драйверы платы на сайте производителя.
Для проверки того факта, установились ли драйвера для вашей платы или нет, необходимо зайти в диспетчер устройств вашего компьютера (правая кнопка мыши по Мой компьютер, далее Диспетчер устройств). Далее смотрите раздел Порты (COM и LPT).
В данном разделе при подключении платы к компьютеру должна появиться строка вида USB-SERIAL…. (COM8). Это и есть ваша Ардуина, запомните номер COM порта, который был назначен для вашей платы, он вам понадобится в дальнейшем для настройки программатора.
Для проверки работоспособности всех выполненных установок, можно сразу же загрузить в контроллер первую программу, использовав один из примеров, входящих в комплект среды разработки. Подключите контроллер к USB компьютера.
Запустите IDE Arduino и загрузите исходный код примера, демонстрирующего использование светодиода LED на плате, который подключен к контакту 13, в меню Файл / Образцы / 01.Basic / Blibk.
Скетч примера откроется в новом окне.
Зайдите в меню Инструменты / Плата и выберите контроллер, который вы используете. Далее зайдите в меню Инструменты / Порт и укажите COM-порт, к которому подключен Arduino.
Напомню, что номер COM-порта можно посмотреть через диспетчер устройств.
Далее проверьте наличие пункта меню Инструменты / Процессор, и если оно присутствует, выберите тот микроконтроллер, который используется на вашей плате.
Пробуем загрузить скетч в Arduino. Нажмите кнопку Загрузить. Вначале скетч будет скомпилирован, и далее будет загружен в контроллер. Если все настройки были сделаны правильно, по окончанию выгрузки вы увидите мигающий светодиод на Вашем контроллере.
Теперь ваша система разработки для контроллера Arduino установлена, протестирована и готова к работе!
Источник: https://mcustore.ru/projects/ustanovka-sredy-razrabotki-dlya-arduino/
Обзор FLProg (Часть 1)
Введение
Приветствую всех посетителей нашего портала, сегодня у нас обзор бесплатной программы под названием FLProg. Узнал я о ней из письма одного из наших посетителей, который попросил уделить ей внимание и по возможности поучаствовать в ее развитии. Собственно сегодня я ее скачаю и попробую написать пару демонстрационных схем, попутно комментируя и выделяя как плюсы программы, так и её минусы.
Сразу оговорюсь, что я успел прочесть пару статей о данной программе и немного просмотреть ее официальный сайт, но саму программу я скачиваю впервые. Так же я поверхностно знаком c FBD и LAD, делали большой проект автоматизации завода лет шесть назад, правда программировали контроллеры на STL и SCL, но для общего развития и, понимая, я читал так же и об других, таких как FBD, LAD, GRAPH 7.
Теперь немного поговорим о самой программе. FLProg – это альтернативная среда разработки, эдакая обертка над Arduino IDE позволяющая программировать и задавать логику микроконтроллеру на двух дополнительных языках: FBD и LAD.
Оба этих языка стали популярными благодаря старшим братьям микроконтроллеров – промышленным контроллерам от фирмы Siemens, гиганта в мире промышленных контролёров, заслуженно занимающий одно из лидирующих мест.
Собственно автор программы частенько на это ссылается, будь то скриншоты контроллеров взятых с официального сайта Сименса или иконками, взятыми из программы Step7.
Немного информации из википедии (Хотя бы бегло прочтите, лишним не будет).
- FBD – Графический язык программирования
- LAD – Язык релейной (лестничной) логики.
На этом со вступлением мы закончим и перейдем к скачиванию и установке программы.
Скачивание и Установка
И так, переходим на официальную страницу скачивания программы. И видим мы тут первый ее плюс. Программа кроссплатформенная. Здесь есть несколько вариантов ОС, это Linux и Wondows. К сожалению дистрибутива, для Mac OS – нет, но мне она и не нужна (Минус не ставлю, но некоторым это не понравиться).
Скачаем мы с вами портативную версию под Windows (Второй плюс, наличие портативной версии, порой удобней таскать все с собой, ну например на флэшке). Переходим по нескольким страницам, после чего попадаем в Яндекс.Диск и наконец скачиваем программу (Первый минус, в место прямых ссылок игра в прятки, дизайн сайта и вложенность запутывает).
И так, после того как мы скачали последнюю версию (FLProg 2.2) и распаковали ее куда нам надо, приступим к ее изучению.
Первый запуск
После запуска нас приветствует главное окно программы с минимальным интерфейсом.
В главном окне мы видим стандартное меню, и несколько кнопок (Открыть, закрыть, сохранить проект и тд).
Создадим свой первый проект. И по традиции ардуинщиков это будет стандартный Blink (моргание 13-м светодиодом).
Нажимаем кнопку “Создать новый проект” и в открывшемся окне выбираем FBD и Arduino UNO.
Проект создан, можно приступать.
Пример “Blink” на FBD
Что мы тут видим. Окно поделенное на несколько оконных блоков. Предназначение левого мне неизвестно, но вот два центральных и правое выглядят знакомо.
- Центральное верхнее – настройка портов и создание дополнительных переменных.
- Центральный нижний – само рабочее поле, где мы будем размещать наши блоки.
- Правый – Список готовых блоков.
Первым делом мы настроим наши порты, а точнее только порт под номером 13 на котором распаян светодиод на плате Arduino UNO.
Кликаем в верхнем центральном блоке по надписи “Выходы” – “Добавить выход”. В открывшемся окне выбираем “Тип” – Цифровой, “Номер контакта” – 13, “Имя” – любой текст (в примере – pin13). Все остальные поля игнорируем.
После того как мы нажмем на кнопку “Готово” и окно закроется, в списке появиться выход с наименованием “pin13”. Перетаскиваем надпись на рабочее поле.
Вот что в итоге у нас получилось.
Ищем в списке готовых блоков нечто похожее на таймеры или хотя бы delay. Таких “таймеров” оказалось два, и оба являются эдакими обертками с дополнительным функционалом.
Блок “Timer” в разделе “Таймеры” – который как мы понимаем из названия и должен быть таймером, на самом деле оказалось реле задержки включения/выключения, использующее для своей работы таймер но не как не являющееся им. За это однозначно минус, наименования не соответствует работе блока.
Последний блок “Generator” в разделе “Таймеры” уже боле менее понятен и как раз впишется в наш пример. Предназначение блока создавать импульсы с заданной длительностью и паузой. Этот блок и будет включать и выключать наш светодиод.
Перетаскиваем блок в рабочее поле и соединяем его выход “Q” с блоком порта “pin13”.
Теперь нам надо зайти в настройки блока генератора. И в настройках выбрать:
Тип генератора: Симметричный мультивибратор. (Вам не кажется, что подобные названия заставляют задуматься и как минимум прочитать мануалы?).
Длина импульса: Константа – Миллисекунды – 1000.
И тут мы видим, что блок поменял свое наименование с G-S на GS-M. То есть авторы решили не делать кучу блоков, а по возможности объединить их, и изменив тип блока мы по сути получили совсем другой блок работающий иначе чем первоначальный. Это еще один минус.
Надо читать мануалы и настраивать блоки (Хорошо, что у программы мануалы есть и довольно таки неплохие, за это плюс).
Я понимаю, что авторы решили упростить и не плодить кучу блоков, но это затруднило, например их поиск, и заставляет читать мануалы, настраивать, и тестировать так ли блок работает, как я его настроил.
После того как мы настроили блок, осталось лишь подать на вход блока генератора единицу, чтобы он работал сразу и всегда.
Кликаем правой кнопкой мыши на входе “EN” блока G-SM и выбираем пункт “Вставить константану”. В открывшемся окне выбираем “True” и жмем “Готово”.
Все, на этом наш пример Blink закончен, осталось лиши загрузить все в Arduino нажав на кнопку “Компилировать проект”. После чего откроется Arduino IDE (Почему-то старая версия 1.6.3) в которой мы увидим созданный FLProg скетч. Грузим скетч в Ардуинку и проверяем.
Ну и давайте теперь посмотрим, какой Си код у нас в итоге получился.
bool _gen1I = 0; bool _gen1O = 0; unsigned long _gen1P = 0UL; void setup() { pinMode(13, OUTPUT); } void loop() { if (1) { if (! _gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { _gen1I = 0 ; _gen1O= 0;} if (_gen1I) { if ( _isTimer ( _gen1P , 1000 )) { _gen1P = millis(); _gen1O = ! _gen1O;}} digitalWrite(13, _gen1O); } bool _isTimer(unsigned long startTime, unsigned long period ) { unsigned long currentTime; currentTime = millis(); if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));} }
На первый взгляд у нас тут какая-то не отформатированная каша, но это только на первый взгляд.
На самом деле программа не обязана делать отформатированный Си код, ведь основная из ее задач – дать не программистам и людям, не знающим Си, программировать Ардуино, и форматирование тут не важно. Но если бы генерируемый код был бы отформатирован, я бы однозначно поставил плюс.
Теперь давайте отформатируем его вручную и разберемся что там к чему.
// Объявление переменных для работы генератора. bool _gen1I = 0; bool _gen1O = 0; unsigned long _gen1P = 0UL; void setup() { // Настройка 13-го порта как выход. pinMode(13, OUTPUT); } void loop() { // Первая строка. Инициализация таймера и его включение/выключение. // Если генератор включен (Напоминаю мы вставили константу чтобы он работал всегда, но это может быть например и порт и некая переменная). if (1) { // Если генератор не был инициализирован, то включаем его и выставляем переменные. if (!_gen1I) { _gen1I = 1; _gen1O = 1; _gen1P = millis(); } } else { // Выключение генератора _gen1I = 0; _gen1O = 0; } // Вторая строка. Логика самого генератора. Переключения и запоминание переменных. // Если генератор включен. if (_gen1I) { // Проверка на необходимость переключения генератора в асинхронном режиме. if (_isTimer(_gen1P, 1000)) { _gen1P = millis(); _gen1O = !_gen1O; } } // Третья строка. Работа с портом. digitalWrite(13, _gen1O); } // Дополнительная функция, реализующая таймер. bool _isTimer(unsigned long startTime, unsigned long period ) { // Получение текущего времени. unsigned long currentTime; currentTime = millis(); // Проверка, наступило ли время переключения. // Функция так же содержит проверку на переполнение переменной, таким образом таймер может работать непрерывно и долго. if (currentTime >= startTime) { return (currentTime >= (startTime + period)); } else { return (currentTime >= (4294967295 – startTime + period)); } }
Как вы видите из отформатированного кода выше (с моими комментариями), код получился в целом хороший. Лишнего мало. Таймер асинхронный. Проверка на переполнение переменной. Ну и собственно все работает.
Конечно, написав на Си мы могли бы сделать код и по проще и по быстрее, но это не главное, главное то, что мы сделали все это просто перетащив пару блоков и задав несколько настроек. А это значит, что программа справляется со своею задачей, дать не программистам, возможность программировать и задавать логику микроконтроллерам.
На этом обзор программы FLProg закончен, но я обязательно продолжу его через неделю, ведь мы попробовали отнюдь не все ее возможности и языки.
Но уже сейчас я могу сделать выводы, что программа достойна внимания, ее стоит скачать и посмотреть. Ну а окончательные выводы мы сделаем в следующей статье.
С наилучшими пожеланиями и с прошедшим вас новым годом.
Источник: http://arduino.on.kg/obzor-FLProg-chast-1
Arduino – IDE. Описание, скачать
IDE (от англ. Integrated Development Environment — интегрированная среда разработки) — это приложение или группа приложений (среда), предназначенных для создания, настройки, тестирования и обслуживания программного обеспечения.
Интегрированная среда разработки характеризуется наличием сложной функциональности, включая редактирование и компилирование исходного кода, создание программных ресурсов, создание баз данных и т.д. Подробнее о IDE и развитии этой концепции можно прочитать здесь.
В рамках проекта Arduino было создано программное обеспечение, отвечающее основным требованиям типичной среды IDE. Это не мощное программное обеспечение, как например Eclipse или NetBeans, а простая, функциональная программа, которая позволяет нам писать, компилировать и загружать программу в микроконтроллер.
Простая структура Arduino IDE является преимуществом, так как обеспечивает быстрое освоение программы и переход к разработке приложений для Arduino. Несмотря на свою простоту и интуитивно понятное управление, стоит обратить внимание на наиболее важные элементы программы.
После запуска программы вы можете найти четыре главных функциональных элемента:
- меню программы;
- панель быстрого доступа к наиболее важным функциям;
- редактор (для размещения кода программы);
- панель сообщений и статуса программы.
Меню программы позволяет осуществлять управление проектом, например, создание нового проекта, сохранение текущего, распечатать на принтере исходный код.
Интересной особенностью программы является встроенный набор примеров программ. Это очень удобно, так как примеры программ можно сразу проверить, загрузив их в микроконтроллер. При необходимости вы можете сохранить пример и изменить его в соответствии с вашими потребностями.
Меню «Файл» и «Правка» содержат стандартные параметры.
Меню «Скетч» содержит параметры для компиляции проекта и импорта необходимых библиотек.
Интересным и полезным элементом IDE является меню «Инструменты», которое включает в себя функции автоматического форматирования кода, архивирования проекта, включение монитора последовательного порта (USB в Arduino рассматривается как обычный последовательный порт).
Наиболее важным элементом меню «Инструменты» является возможность выбора соответствующей платы, то есть вашей системы Arduino подключенной к компьютеру. В списке находятся все официальные версии Arduino. Если ваш тип платы отсутствует в списке, то вы можем добавить ее, изменив один из файлов программы. Однако это материал для отдельной статьи.
В меню «Инструменты» вы также можете установить порт, к которому подключена плата Arduino. Пакет Arduino IDE сам определяет порт, но иногда требуется вручную установить номер порта в настройках.
С помощью Arduino IDE можно также загрузить, то есть запрограммировать Bootloader (загрузчик) для нового, чистого микроконтроллера Atmega, что позволяет клонировать чипы или просто заменить неисправный микроконтроллера в Arduino.
Для обычной работы с Arduino IDE используется панель быстрого доступа, которая оснащена наиболее важными кнопками. Это решение, облегчающее работу с пакетом IDE, дает нам прямой доступ к практически всем необходимым параметрам при написании и тестировании программы.
Они позволяют (слева направо):
- скомпилировать программу;
- загрузить программу в микроконтроллер (перед прошивкой код программы компилируется);
- начать работу над новым проектом;
- открыть существующий проект;
- сохранить проект на диск;
- включить монитор последовательного порта.
Все опции, расположенные на панели быстрого доступа, продублированы в меню программы.
Дополнительным полезным элементом, находящимся под кнопкой включения монитора последовательного порта — это меню для управления вкладками (7). Вкладки в Arduino IDE упрощают написание сложных проектов, а так же позволяют работать с несколькими проектами одновременно.
Самая большая часть окна программы предназначена для написания непосредственно самого кода программы. Редактор в Arduino IDE не слишком продвинутый, но имеет самые важные элементы, позволяющие облегчить написание простых программ. К таким элементам можно отнести подсветка синтаксиса и блоков (скобки). Это не много, но достаточно для простых проектов.
Последним элементом программы является окно сообщений и статуса. Отображаемая там информация позволяет пользователю найти ошибки в программном коде и получить подтверждение о завершении компиляции и загрузки программы в микроконтроллер.
Подводя итог можно сказать, что Arduino IDE — это простой программный пакет, который позволяет запрограммировать любую известную плату Arduino, общаться с последовательным портом и легко управлять проектами.
Скачать Arduino IDE. На момент написания статьи доступна стабильная версия 1.8.4
Источник: http://www.joyta.ru/10685-arduino-ide-opisanie-skachat/