Язык программирования для ардуино: Программирование Ардуино | Аппаратная платформа Arduino

Содержание

Урок 3. Языки программирования, используемые в робототехнике

Продолжаем курс «Ардуино для начинающих». Мы уже поговорили о платах Ардуино, разобрали конкретную модель Arduino Uno во втором уроке и сегодня мы коснемся темы языков программирования для робототехники и электроники.

C++

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

Тем не менее, в отношении плат Ардуино и ряда других аналогичных микроконтроллеров широкое применение получил язык C++.

Из википедии: C++ (читается си-плюс-плюс) — компилируемый, статически типизированный язык программирования общего назначения.

Под Ардуино используется очень близкий к C++ язык программирования. Основы языка мы разберем позже, но если вы хотели бы уже сейчас с ним познакомиться — на нашем сайте есть справочник языка C++ Ардуино.

Стоит отметить, что C++ используется для:

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

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

LISP

LISP является вторым старейшим языком программирования в мире (FORTRAN старше, но только на один год). Он не так широко используется, как многие другие языки программирования в этом списке; однако, это все еще весьма важно в программировании искусственного интеллекта. Части ROS написаны на LISP, хотя не нужно знать это, чтобы использовать ROS.

Hardware Discription Languages (HDLs)

Эти языки довольно знакомы некоторым робототехникам, потому что они используются для программирования полевых программируемых массивов шлюзов (FPGA).

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

Assembly

Assembly позволяет программировать на «уровне единиц и нулей». Это программирование на самом низком уровне (более или менее). В недавнем прошлом, большинству низкоуровневой электроники требовалось программирование на Assembly.

С ростом Arduino и других подобных микроконтроллеров, теперь можно легко программировать на этом уровне, используя C/C++, что означает, что Assembly станет менее необходимой для большинства роботов.

MATLAB

MATLAB и его родственники с открытым исходным кодом, такие как Octave, очень популярны среди инженеров-робототехников для анализа данных и разработки систем управления. Существует также очень популярный Robotics Toolbox для MATLAB. Существуют люди, которые разработали целые робототехнические системы, используя только MATLAB.

C# / .NET

C# — проприетарный язык программирования, предоставляемый Microsoft. Если планируется использовать эту систему,то вероятно, придется использовать C#.

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

Java

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

Java «скрывает» основные функции памяти от программиста, что облегчает программирование, чем, скажем, C, но это также означает, что программист меньше понимает, что на самом деле делает его код.

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

Python

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

Вероятно, одной из причин его популярности является то, что Python (и C++) являются двумя основными языками программирования, найденными в ROS. Как и Java, это интерпретирующий язык. В отличие от Java, основной целью языка является простота использования.

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

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

В следующих уроках этого курса мы более детально коснемся основ программирования плат Ардуино.

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 Diecimila
Arduino Duemilanove
Arduino Leonardo
Arduino Lilypad
Arduino Mega 2560
Arduino Micro
Arduino Mini
Arduino Nano (ATmega168)
Arduino Nano (ATmega328)
Arduino Pro Mini
Arduino Pro (ATmega168)
Arduino Pro (ATmega328)
Arduino Uno
Intel-Galileo

Со временем, планируется поддержка плат основанных на контроллерах STM.

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

Вид окна программы в режиме языка FBD.

Вид окна программы в режиме языка LAD.

В правой части рабочей зоны расположена библиотека элементов. В схему элементы переносятся простым перетаскиванием. При двойном клике по элементу будет показана информация о нём.

Вот список блоков доступных на сегодняшний день.

FBD:

Базовые элементы

[XOR]
[AND]
[OR]
[Bounce]

Специальные блоки

[Scale]

Триггеры

[SR]
[TT]
[RS]
[Rtrig]

Таймеры

[Generator]
[Timer]

Счетчики

[Counter]
[SpeedCounter]

Математика

[SUM(+)]
[MUL(*)]
[SUB(-)]
[DIV(/)]
Алгебра
[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

Операции с битами

Шифратор
Дешифратор
Чтение бита
Запись бита

Разное

Матричная клавиатура
Пьезодинамик

EEPROM

Запись в EEPROM
Чтение из EEPROM

Коммуникации

SendVariableFromCommunication
RessiveVariableFromCommunication
WebServerPage
WebClient

LAD:

Базовые блоки

Контакт
Катушка
Защита от дребезга
Выделение переднего фронта

Специальные реле

Двустабильное реле
Реле времени
Генератор
Реле сравнения

Алгебра

SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM

Аналоговые блоки

Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соединителя
Выход аналогового соединителя
Скоростной счетчик

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 клиент

В настоящее время ведется разработка функциональных блоков для работы с трех­осевым гироскопом, люксометром, и другими датчиками и сенсорами. Также ведется работа над организацией обмена данными через , радиоканал, и Wifi. В дальнейших планах. разработка SCADA-системы для организации интерфейса систем, разработанных в программе FLProg на персональном компьютере или графических дисплеях.

Список периферийного оборудования, поддерживаемого программой, доступен на здесь


Датчики температуры и влажности DHT11, DHT21, DHT22.

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

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

После завершения работы над проектом производится его компиляция. После компиляции автоматически откроется программа «Arduino 1. 5.7″ с загруженным скетчем вашего проекта. В программе «Arduino IDE 1.5.7» вам необходимо будет указать номер COM ­порта, к которому подключен ваш контроллер, выбрать его тип, и произвести заливку скетча в контроллер. Подробнее о программе «Arduino IDE 1.5.7» можно почитать на сайте Arduino.

Языки программирования для Arduino.

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

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

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

Python.

Общаться с Arduino по последовательному интерфейсу довольно просто в Python. 

На Unix подобных системах вы можете читать и писать через последовательное устройство,

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

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

Однако Python очень подходящий вариант для использования вместе с Ардуино.

Это язык, разработан, быть интуитивным и как таковой часто рекомендуется в роли стартовой площадки для других форм кодирования. 

К тому же, если Вы когда-нибудь, начнете работать с платформами отличными от Arduino, то вы найдете,ваш опыт с Python весьма полезным.

Snap4Arduino

Если вы знаете Berkeley Snap (BYOB) и Arduino, возможно, вы уже догадались, это комбинация обоих.

Snap4Arduino это модификация визуального языка программирования Snap, который позволяет легко взаимодействовать практически со всеми версиями макетных плат Arduino.

C#

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

Вы можете запускать CmdMessenger в Майкрософт Visual Studio или использовать другию альтернативу. Оттуда вы сможете общаться между ПК и Arduino с использованием C#, делать вызовы функций или отправлять и получать команды.

ArduBlock

Ardublock это графический язык программирования для Arduino, предназначенный для непрограммистов и простой в использовании. 

скачать с Github

Выглядит все действительно изящно, ArduBlock совмещает визуальное программирование (простое перемещение блоков) и фактическое программирование Arduino. Программное обеспечение работает как инструмент для Arduino IDE. После завершения работы над вашим эскизом и подачи команды на загрузку, программное обеспечение просто разбирает вашу блок-схему и превращает ее в реальный код для Arduino. Далее происходит загрузка на вашу плату. Вы можете просмотреть полученный код, сравнить его с вашим визуальным кодом, и внести изменения. Все это имеет большой потенциал, чтобы стать интересным образовательным инструментом.

Обзор визуальных средств программирования микроконтроллеров (часть 2)

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

Внимание! На сайте www.lab169.ru сделан репост этой публикации с полно-
размерными иллюстрациями и возможностью скачать все файлы проектов:

www.lab169.ru/2018/12/25/обзор-визуальных-средств-программирования-микроконтроллеров-часть-2

В прошлый раз мы обсудили особенности программ MicroBlocks и MakeCode. На повестке дня сегодня следующие визуальные среды.

  1. KittenBlock
  2. MindPlus
  3. Snap4arduino
  4. mBlock5
  5. mBlock3

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

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

Но даже если не обращаться к компьютерным играм, интерактивность очень помогает осваивать работу с микроконтроллерами. Достаточно щелкнуть по блоку «digitalWrite» мышкой, и светодиод на плате загорится. А если щелкнуть по блоку «analogRead», мы сразу увидим цифровое значение, возвращаемое аналоговым портом, к которому подключен датчик (датчик освещённости, например).

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

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

 

KittenBlock

www.kittenbot.cc

При описании этого программного продукта мне придётся упомянуть о массе «хитростей», но результат того стоит.

Текущая версия — 1.8.1 (не изменялась с момента прошлой публикации). Однако на web-сайте очень долго лежала лишь версия 1.6.5. Не так давно сайт обновился, на нём пропала информация о «старых» (но для нас более чем интересных и актуальных) продуктах компании KittenBot, зато появился инсталлятор программы KittenBlock версии 1.8.0. И не исключено, что ссылок на новые версии тоже долго не будет.

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

KittenBlock базируется на Scratch 3, при этом работает не только в Windows 10, но и в Windows 7, позволяет интерактивно взаимодействовать с некоторыми контроллерами на базе Arduino, а также с Micro:bit. Иными словами, у нас появился инструмент, позволяющий писать игры, в которых Micro:bit либо Arduino Uno с подключенными сенсорами будут играть роль игрового пульта. И писать программы автономной работы для устройств на базе этих контроллеров, само собой.

Следующая хитрость. Щелкнув по списку устройств (изначально отображается как «Нет устройства») и выбрав Arduino Uno, а затем установив соединение с нужным коммуникационным портом (щёлкнув по надписи «Не подключено»), Вы НЕ сумеете добиться того, чтобы Ваша плата управлялась интерактивно.

Но данная возможность всё-таки существует! Нужно лишь выбрать вместо Arduino Uno устройство под названием KittenBot. Собственно, именно для управления этим интересным робототехническим набором среда KittenBlock и была изначально создана. Итак, выбираем «KittenBot», нужный коммуникационный порт (который будет помечен как «UNO» или как «Ch440»), а затем нажимаем кнопку «Обновить прошивку».

Робоплатформа KittenBot базируется на UNO-совместимом контроллере RosBot. На палитре блоков мы видим теперь множество специфических команд, но главное, присутствуют и базовые команды работы с цифровыми и аналоговыми портами.

Реальная скорость чтения и изменения состояния портов при работе в интерактивном режиме в программе KittenBlock не является рекордной, но вполне хороша. Скрипты для тестирования представлены ниже.

При тестировании с платой Arduino Uno скорость чтения состояния двух аналоговых портов составила 151 цикл за 10 секунд. А вот с измерением скорости записи возникли проблемы.

Когда я тестировал одну из старых версий, я получил вполне разумный результат около 150 циклов за 10 секунд. Но среда 1.8.1 демонстрирует 1460 циклов за 10 секунд! Вспоминается старая фантастическая комедия, в которой приборная панель на космическом корабле была промаркирована следующим образом: «Разумная скорость», «Световая скорость», «Безумная скорость».

Число «1460» в данном случае говорит нам лишь об одном: программная среда на самом деле не проверяет, действительно ли плата выполнила отправленную команду, или нет. Реальная скорость выполнения команд много ниже. По результатам других тестов она не превышает 120-160 циклов записи за 10 секунд. Иначе говоря, на практике удаётся мигнуть лампочкой не более, чем 12-16 раз в секунду.

Для оценки реальной интегральной производительности системы «KittenBlock + Arduino Uno» пришлось использовать другой метод, опирающийся на измерение частоты автоколебаний, возникающих при отрицательной обратной связи. Результат — 22 переключения состояния в секунду (11 колебаний в секунду), что вполне годится для неспешной езды по линии, например. Скрипт представлен ниже.

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

Но давайте продолжим обзор среды KittenBlock. Что действительно импонирует в этой программе — возможность работы не только с «голым» Micro:bit, но и с массой устройств на его основе, например, с робототехническим контроллером Robotbit, умеющим управлять четырьмя обычными или двумя шаговыми двигателями, а также восемью сервомоторами. Список разнообразных поддерживаемых наборов и периферии непрерывно растёт и включает в себя продукцию разнообразных компаний.

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

Процесс создания собственных расширений для среды KittenBlock еще предстоит освоить. Но уже сейчас это неплохой инструмент для изучения текстового программирования контроллеров Arduino с помощью языка Wire (по сути это диалект языка C). При сборке графического скрипта мы не только сразу видим изменения в тексте создаваемой программы, её можно нажатием мыши загрузить в Arduino IDE для дальнейшего редактирования.

Достаточно важно с точки зрения изучения языка Wire то, что разработчики KittenBlock не стали идти по пути неоправданного упрощения. В своих программах необходимо явно указывать нужный режим работы того или иного порта («Вывод режим INPUT/OUTPUT/INPUT_PULLUP»), а также скорость работы последовательного соединения. Все эти требования обусловлены использованием среды Arduino IDE, об этом мы будем говорить чуть подробнее, когда зайдёт речь о среде mBlock3 с расширением AdvancedArduino.

Программируя плату Micro:bit можно изучать язык Python. Точно так же все изменения в графическом сприпте будут отражаться в текстовом окне с правой стороны. При желании можно сделать изменения непосредственно в тексте, сохранить его, загрузить уже использованный ранее, и лишь после этого нажать на кнопку «Выполнить скрипт Python».

А ещё благодаря разработчикам компании KittenBot у нас есть возможность загрузить дистрибутив MakeCode for Micro:bit, работающий без интернет-соединения под управлением операционной системы MS Windows 7.

kittenbot.cc/software

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

 

MindPlus

www.mindplus.cc

ОЧЕНЬ китайская программа, продукт компании DFRobot. Этот производитель предлагает массу интересных товаров. И «китайское» в данном случае означает качественное, поскольку это то, что китайцы делают для себя, а не для всего остального мира.

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

Текущая версия программы — 1.5.0, раньше на сайте лежала версия 1.2.1, и результаты замера скорости работы именно этой старой версии вошли в таблицу в первой части обзора. Новая таблица с результатами и новой и старой версии в конце статьи.

MindPlus также базируется на Scratch 3 и позволяет создавать для плат Arduino Uno и Micro:bit программы для работы в интерактивном и в автономном режимах.

После того, как Вы настроили язык, подключить плату Arduino Uno будет совсем несложно. Следует щёлкнуть по значку «Extensions» в левом нижнем углу, выбрать вкладку «Board», затем «Arduino Uno». И как только Вы укажете коммуникационный порт («Connect device», порт, помеченный как UNO или Ch440), Вы увидите, что MindPlus попытается соединиться с платой, и спустя несколько секунд самостоятельно начнёт загрузку собственной прошивки (этот процесс отображается над областью Сцены). Пожалуй, с точки зрения удобства подготовки платы Arduino к использованию, всё реализовано наилучшим образом.

После завершения прошивки Micro:bit придётся ещё повращать плату для калибровки акселерометра, об этом следует помнить (MindPlus не сможет подключиться к Micro:bit до тех пор, пока Вы не завершите этот процесс).

О скорости работы. MindPlus показывает отличные результаты при чтении показаний датчиков, и это позволяет с успехом использовать его для программирования различных игр. За 10 секунд происходит 322 цикла чтения состояния двух аналоговых портов!

Но вот со скоростью записи всё грустно. За 10 секунд удаётся мигнуть светодиодом всего лишь 46 раз. Ужасающе плохой результат. Ни о какой программе езды по линии в интерактивном режиме управления робоплатформой речи не идёт (разве что о программе переползания по линии). Интегральный показатель — 8 переключений состояния в секунду при автоколебаниях. Но даже такой скорости работы более чем достаточно для того, чтобы проверить, загорится ли светодиод, если щелкнуть мышкой по графическому блоку, изменяющему состояние порта.

Предоставляемых разработчиками расширений достаточно много, и хотя все они предназначены для работы с продукцией компании DFRobot, могут использоваться и с товарами других производителей. Например, датчик температуры DHT11/22 работает одинаково, независимо от того, кем именно он произведён.

Возможность изучать языки текстового программирования Wire и Python тут тоже присутствует, хотя на мой взгляд, у MindPlus в этом плане больше шероховатостей, чем у KittenBlock. Кстати, оба программных продукта пока не позволяют запускать несколько параллельных процессов на Micro:bit (надеюсь, Вы помните, что MakeCode и MicroBlocks умеют это делать, и насколько это важно).

Обзор программы MindPlus можно было бы закончить словами: «Несмотря на недостатки, отлично подходит для программирования игр, в остальных случаях лучше всё-таки выбрать что-то иное». Однако существует один дополнительный неожиданный аспект, который нельзя не учитывать, когда мы говорим о MindPlus. Эта программа использует для коммуникации с платой Arduino один из вариантов протокола Firmata, а именно этот протокол требуется для работы уникальному продукту в нашем обзоре — среде Snap4arduino.

 

Snap4arduino

snap4arduino.rocks

С точки зрения задачи создания программ автономной работы для микроконтроллеров возможности этой графической среды очень скромны. Да действительно, получается преобразовать графический скрипт в текстовой скетч, а потом найти его на диске и загрузить в Arduino IDE. И только. Никаких проработанных библиотек для подключения разнообразных датчиков и исполнительных устройств, присутствует лишь минимальная функциональность. Даже последовательное соединение использовать нельзя, а как без этого отлаживать программы? По сути, таким образом мы можем создать лишь заготовку будущего проекта, которую потом придётся «дорабатывать напильником».

Однако у среды Snap4arduino есть неоспоримое достоинство: идеальная, скоростная и надежная работа с микроконтроллерами в интерактивном режиме. И при чтении состояния портов, и при их изменении. Для проектов, в которых необходима достаточная скорость работы с большим количеством портов, среда Snap4arduino совершенно незаменимый инструмент.

Есть у программы и огромный недостаток: для подготовки платы необходимо загрузить на нее прошивку StandartFirmata с помощью того же Arduino IDE.

«Хардкорные ардуинщики» лишь снисходительно улыбнутся, прочитав такое. «Вот ведь проблема!» Но это не отменяет того факта, что для большинства начинающих это действительно может оказаться непреодолимым препятствием. И уж тем более для учеников начальной школы. Особенно когда нет возможности прошить плату один раз и навсегда. Ведь достаточно загрузить на нее альтернативную программу, и процедуру прошивки придётся повторять.

Но теперь появился выход: оказывается, после того, как мы прошьём плату Arduino Uno в среде MindPlus, становится возможно работать и в среде Snap4arduino!

Таким образом, программы MindPlus и Snap4arduino представляют собой отличную «связку», хорошо работают вместе, дополняя возможности друг друга.

Среда Snap4arduino работает чрезвычайно быстро с платой, на которую загружена прошивка StandartFirmata, и медленнее (но всё равно очень быстро) с платой, на которую загружена прошивка MindPlus, и в режиме чтения, и в режиме записи. Парадоксальным образом прошивка MindPlus ничуть не ухудшает общую интегральную производительность системы. Конкретные цифры можно посмотреть в таблице.

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

 

mBlock5 for PC

www.mblock.cc/mblock-software

Разработка компании MakeBlock, новая версия (5.0.0-RC) легендарной программы mBlock, теперь на базе Scratch 3. Чрезвычайно ожидаемый многими продукт, который этих ожиданий пока так и не оправдал.

В настоящий момент позволяет программировать лишь контроллеры Arduino Uno и Mega2560 (но лишь оригинальные Uno и Mega2560) и Micro:bit, но лишь для работы в автономном режиме. Поддержку интерактивного режима обещают.

Для чего пока действительно подходит mBlock5, это для программирования собственных робототехнических наборов компании MakeBlock: mBot, mBot Ranger, Neuron и особенно, Codey Rocky. Причём последний имеет забавную разъёмную конструкцию из головы (Codey) и шасси (Rocky), базируется на ESP32, и при создании программ есть возможность использовать несколько параллельных процессов.

 

mBlock 3 for PC

www.mblock.cc/mblock-software

Текущая версия 3.4.11, и таковой, судя по всему, и останется. Продукт уже достаточно старый, базируется на Scratch 2, и в этом есть как свои недостатки, так и свои достоинства.

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

Интегральная производительность на минимально приемлемом уровне (16 переключений состояния в секунду).

Это ПЕРВАЯ визуальная среда, в которой стало возможно использовать и интерактивный режим, и режим создания программ автономной работы («Arduino mode»). Именно для среды mBlock3 к настоящему моменту написано максимальное количество разнообразных методических материалов, а также разнообразных расширений, некоторые из которых трансформируют продукт до неузнаваемости.

mBlock3 с современными 32-разрядными контроллерами работать (считается, что) неспособен, и в настоящий момент представляет собой реализацию идеи «с минимальными усилиями выжать из Arduino Uno почти максимум». А это значит, что программная среда mBlock3 годится и для знакомства с платформой Arduino, и для того, чтобы создавать на базе Arduino Uno проекты, значительно превышающие по сложности основную массу тех, что наводнили Youtube и руководства по программированию Arduino IDE.

Здесь следует упомянуть об одном принципиально неустранимом недостатке сочетания «Scratch+Arduino». Восьмиразрядные платы Arduino имеют существенно меньшую производительность, чем любой компьютер, на котором «крутится» Scratch, а это значит, что поддержку всех возможностей настолько высокоуровневого языка как Scratch на платформе Arduino обеспечить просто не получится. Мы можем составлять программы с использованием блочного языка Scratch. Но вместо списков нам придется создавать массивы, и придумывать для этого специальные блоки. Вместо универсальной переменной с динамической типизацией, которая может хранить и строку, и целое число, и действительное число, нам придётся использовать специальные придуманные самостоятельно блоки для создания типизированных переменных (byte, int, float).

Единственный способ радикального преодоления вышеописанной проблемы — повышение производительности микроконтроллеров и отказ от языков низкого уровня в пользу таких, которые обладают теми же самыми свойствами, что язык Scratch (например, возможность работы со списками, как в Python). Что мы можем сделать пока? До тех пор, пока жизнь заставляет использовать низкоуровневые языки (в том числе при обучении детей), хотя бы немного попытаться нивелировать их недостатки. Ведь за высокоуровневыми языками будущее! Программирование на языках низкого уровня тоже будет использоваться. Но ОЧЕНЬ редко и лишь ОЧЕНЬ узкими специалистами.

«Плохая» (условно) новость: чтобы перейти к «продвинутому» программированию микроконтроллеров Arduino в среде Scratch язык Wire учить придётся. Хорошая новость заключается в том, что теперь его не требуется зубрить! Требуется просто понимание особенностей языка: чем локальная переменная отличается от статической или глобальной, например. Или что произойдёт, если переменной типа byte присвоить значение 255, а потом увеличить её значение ещё на единицу. Кстати, для ответов на подобные вопросы незачем штудировать толстенные фолианты, достаточно посетить сайт arduino.ru, раздел «Программирование».

arduino.ru/Reference

Именно для нивелирования недостатков низкоуровневого языка Wire было создано расширение для среды mBlock 3, которое называется AdvancedArduino. И до тех пор, пока мы в нашей стране не перейдём поголовно к использованию в процессе обучения контроллеров, подобных Micro:bit, Calliope, Adafruit Circuit PlayGround Express и т.д., это расширение будет позволять детям извлекать из программирования удовольствие и пользу.

Итак, сегодня я хочу рассказать не просто о программе mBlock3, а о связке  «mBlock3 + AdvancedArduino Extension».

Процесс установки расширения AdvancedArduino чрезвычайно прост и описание его по ссылке ниже.

www.lab169.ru/mblock/advanced-arduino-extension-v1-0/rus

Но здесь размещено русское описание самой первой версии расширения, которую можно даже скачать в виде ZIP-файла и установить, но это будет ошибкой. Правильнее будет установить свежую версию с англоязычной страницы или прямо с сайта mBlock через менеджер расширений (выбрав из списка расширений, доступных для загрузки).

www.lab169.ru/mblock/advanced-arduino-extension-c-v

Первая версия расширения отличается от всех последующих тем, что в ней отсутствует команда явного переключения режима работы порта из состояния «вход» (INPUT) в состояние  «выход» (OUTPUT) или в состояние «вход с подтягиванием к высокому уровню» (INPUT_PULLUP). Опыт показал, что операция переключения режима работы является базовой, критически важной для понимания принципов работы микроконтроллера, и полезно, если дети будут с самого начала использовать эту команду в явном виде, поскольку это требуется средой Arduino IDE. А среда mBlock перестанет ошибаться, когда мы начнём использовать номер порта в качестве параметра.

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

 Самая свежая версия расширения «AdvancedArduino» в настоящий момент — 2. 5, и она включает в себя (помимо заголовка) 10 блоков, работающих как в интерактивном режиме, так и в режиме «Arduino mode» (базовые блоки из расширения «Arduino», но исправленные для устранения ошибок), 1 блок, который можно использовать как в одном, так и в другом режиме («pinMode», в интерактивном режиме никак не влияет на работу программы, mBlock сам при необходимости переключает порт в другой режим), и 57 блоков, которые следует использовать лишь в режиме «Arduino mode».

На любой компьютер с выходом в интернет можно буквально за несколько секунд добавить расширение AdvancedArduino при помощи менеджера расширений среды mBlock3 (не забывайте о наличии поля Search, очень помогающего быстро найти то, что нужно). Кроме того, если возникают вопросы с использованием того или иного блока, в любой момент времени можно обратиться к примерам, воспроизвести их по образцу, либо скачать целиком в готовом виде и проверить, как они работают. Для этого не обязательно запоминать названия сайтов, достаточно в том же менеджере расширений выбрать AdvancedArduino (в списке доступных или в списке установленных расширений) и щёлкнуть по ссылке «More Info». Страница с примерами откроется в окне браузера.

Что же становится доступным после установки? Использование переменных различных типов, массивов, произвольных функций, графических блоков, включающих фрагменты текстового кода, процессов, запускаемых в фоновом режиме и по расписанию, создание процедур обработки аппаратных прерываний, и т.д. Всё это вплотную приближает связку «mBlock3+AdvancedArduino» к профессиональным системам программирования по набору предоставляемых возможностей.

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

 

Приложение.

Таблица результатов тестирования скорости работы Scratch-подобных программных сред.

Название

Чтение

Запись

Интегральный тест

KittenBlock 1. 8.1

15,1

146

22

MindPlus 1.2.1

18

4,4

7

MindPlus 1.5.0

32,2

4,6

8

Snap4arduino 1.2.7
(StandartFirmata)

86

28,6

41

Snap4arduino 1.2.7
(MindPlus Firmata)

45,4

22

42

mBlock 3. 4.11

14,4

14,4

16

 

Внимание! На сайте www.lab169.ru сделан репост этой публикации с полно-
размерными иллюстрациями и возможностью скачать все файлы проектов:

www.lab169.ru/2018/12/25/обзор-визуальных-средств-программирования-микроконтроллеров-часть-2

Язык программирования arduino на русском.

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

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

Фактически ИИ создавался воспроизводить умственную природу homo sapiens.

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

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

Язык программирования плат Ардуино строится на C. Этот язык вполне легок в ознакомлении и включает в себя специфическую обобщенную среду разработки. Такой принцип помогает создавать индивидуальные замыслы тем, кто имеет только первичным уровнем создания программ.

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

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

What is FLProg – FLProg

 

 

Currently, the world has been a boom in the use of microcontrollers in various projects and startups. Indeed, the price of microcontrollers has fallen, and their capabilities are constantly growing. Yes, and our friends, the Chinese, learned how to make peripherals for them, and sell it to the same ridiculous prices. But with programming microcontrollers is not so rosy…

How it all began and how it developed

Since the advent of microprocessors, the development of the principles of working with them goes the way of the growth of abstraction. The first stage was represented by programming directly in machine code. The programming was complex, long and required a very specific mindset. Therefore, programmers were very few.

But people being lazy, and laziness is an engine of progress. Came up with the first level of abstraction – Assembly language. Writing programs became easier and more fun. The number of programmers has increased. But still the Assembly is not very different from machine code.

So there was another level of abstraction. High level language. The main purpose of these languages was the opportunity to explain to the machine what they want from it, in language as close as possible to the human. This allowed us to do programming for people with less specific mindset. Therefore, with the development of high-level languages number of programmers increased, and, accordingly, a growing number of useful programs that they created.

As things are now

Of course, to start working directly with the controller requires some preparation. We need a programmer configured for programming the computer, and, of course, knowledge of the programming language. In addition, requires the ability to work with a soldering iron, printed circuit Board design, knowledge in electrical and electronics. So the threshold of entry into the area of creating their own devices to the microcontroller remains high.

In addition, for such work requires a combination of skills that rarely occur together. Programmers rarely make friends with a soldering iron, and electronics are often not programmers. For programmers, the problem was solved by the creation of the Arduino Board which allows you to collect the device without the use of tools.

 

 

For electronics and electricians all worse. Until recently, in order to create their device using a microcontroller, they had two options. Either by to study the programming language “C”, or to ask for help from the programmer. Both ways are not the best. In order to become a programmer requires a certain mindset, are not always compatible with the experience of reading electrical circuits. A friend of the programmer may not be at hand.

At the same time, there has long been a programming environment adapted to the ordinary electronics engineer, or electrician. I mean environment for programming industrial controllers. PLC. They allow you to create software for the controllers in the languages FBD and LAD. In fact, as those languages they are not. Rather, it is a graphical environment for drawing in principle or in logic circuits.

FBD (Function Block Diagram)

– graphical programming language standard IEC 61131-3. The program is formed from the list of circuits to be performed sequentially from top to bottom. When programming uses sets of library units. Block (element) – is a subroutine, function, or function block (AND, OR, NOT, triggers, timers, counters, blocks of analog signal processing, mathematical operations, etc.). Each individual chain is an expression that is composed graphically from the individual elements. To the output of the unit is connected the next block, forming a chain. Within the circuit blocks are executed in the order of their connection. The result of the calculation circuit written in an internal variable or output it to the controller.

Ladder Diagram (LD, LAD, РКС)

– ladder  logic. The syntax of the language easy to replace logic circuits, made on relay technology. The language is designed for engineers in automation, working in industrial enterprises. Provides a visual logic interface controller to facilitate not only the task of actually programming and commissioning, but and fast Troubleshooting the plug-in to the controller hardware. A program in ladder logic is visual and intuitive electrical engineers graphical interface, representing the logical operations like electrical circuit closed and open contacts. The flow or absence of current in this circuit corresponds to the result of the logical operation (true if the current flows; false – if the current does not flow). The basic elements of language are the contacts that can be figuratively likened to a pair of relay contacts or buttons. Pair of contacts is identified with a Boolean variable, and the condition of this pair – with variable value. Vary normally closed and normally open contact elements that can be mapped with normally closed and normally open buttons in electrical circuits.

This approach proved to be very convenient for easy entry into the development of automated control system of electrical engineers and electronics engineers. Developing projects of installations, they can easily bind these settings to the algorithms of the controller. Maintenance of these installations also better when the existing staff can easily check the operation of the control system to find the problem. And there is no need to call every little thing a programmer from the “Center”. And this approach is justified. To date, almost all of the industrial automation system is created using such tools.

This development environment is from Siemens, ABB, Schneider Electric… and almost all manufacturers PLC. It would seem the perfect solution for lovers of homemade products. But, as there is always a “but”. All of these programming environments is linked to the industrial controller of a specific manufacturer. And the prices for these controllers a little inspiring. Very rarely a family budget will allow you to purchase the controller with a price of a few tens of thousands of rubles.

But Arduino is perfect for homebrew, and unfortunately, which our country has always been, is and will be rich. But again “but”. These boards are programmed in C. For most of these intelligent people, with very straight arms growing out of allotted space, the C language is the Chinese alphabet. They can think, draw, build, debug and run complex schemes, but If, For, Case, Void, etc. is not for them. Of course, you can read the instructions on the Internet to play for some time, blinked led by example. But for more serious applications requires detailed study of the language. And why should they?

They are not going to be professional programmers. They have a different way. They were up to something. Yes, it’s easier and prettier to assemble with a microcontroller, but becomes for this programmer, after spending months learning the language? No, of course. Gather the old, simpler, of course, but in their field.

On the basis of these calculations and the project was created FLProg. The main idea of the project is to combine the principles of industrial programming cheapness and ease of Arduino. The project offers a new level of abstraction with a rather bold statement –

The result is a tool that allows you to create your projects on the Arduino, any person familiar with electrical engineering and electronics, enabling it to establish its product using data boards.

The project consists of two parts.

The first part is a desktop application FLProg, which is a graphical programming environment Arduino boards.

Secondly, this website through which members of the community of users can communicate among themselves, learn the latest project news, download the latest version of the program, and to find the necessary information on the application.

Let’s start in order

The program FLProg allows you to create firmware for Arduino boards using the graphical languages FBD and LAD, which are a standard in programming industrial controllers. When creating a program I tried to use the achievements of programmers Siemens, ABB, Schneider Electric in their programming environments.

I slightly expanded the classic features of these languages, adding functional blocks, responsible for working with external devices. They are “wrappers” over the libraries designed to work with them. The program runs on a computer running OS Windows, Linux-32 and Linux 64

When you create a new project you will be prompted to choose the programming language in which you will create the project and the controller on which this project will be implemented.

Here is a list of Arduino boards supported by the program to date:

Arduino Duemilanove
Arduino Leonardo
Arduino Lilypad
Arduino Mega 2560
Arduino Micro
Arduino Mini
Arduino Nano (ATmega168)
Arduino Nano (ATmega328)
Arduino Pro Mini
Arduino Pro (ATmega168)
Arduino Pro (ATmega328)
Arduino Uno
Intel-Galileo

Over time, as acquisitions, we plan to support boards based on the controllers STM.

A project in FL Prod is a set of circuit boards, each of which is assembled a complete module of the General scheme. For convenience, each card has the name and comments. As each charge can be minimized (to save space in the work area when the work is finished) and deploy. The red led in the name of the Board indicates that in the circuit Board there are errors.

The view window of the program in the FBD language.

 

Вид окна программы в режиме языка LAD.

 

In the right part of the working area place the library elements. In the diagram, the elements are transferred by simple drag and drop. By double clicking on the item will shows the information about it.

Here is a list of units currently available

FBD:

Базовые элементы

[XOR]
[AND]
[OR]
[Bounce]

Специальные блоки

[Scale]

Триггеры

[SR]
[TT]
[RS]
[Rtrig]

Таймеры

[Generator]
[Timer]

Счетчики

[Counter]
[SpeedCounter]

Математика

[SUM(+)]
[MUL(*)]
[SUB(-)]
[DIV(/)]
Алгебра
[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

Операции с битами

Шифратор
Дешифратор
Чтение бита
Запись бита

Разное

Матричная клавиатура
Пьезодинамик

EEPROM

Запись в EEPROM
Чтение из EEPROM

Коммуникации

SendVariableFromCommunication
RessiveVariableFromCommunication
WebServerPage
WebClient

[collapse]

LAD:

 

Базовые блоки

Контакт
Катушка
Защита от дребезга
Выделение переднего фронта

Специальные реле

Двустабильное реле
Реле времени
Генератор
Реле сравнения

Алгебра

SIN
COS
TAN
ABS
MAX
MIN
SQ
SQRT
POW
RANDOM

Аналоговые блоки

Масштабирование
Математика
Счетчик
Аналоговый переключатель
Переключатель много к одному
Переключатель один ко многим
Аналоговый вход контроллера
Аналоговый выход контроллера
Вход аналогового соединителя
Выход аналогового соединителя
Скоростной счетчик

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 клиент

[collapse]

 

Currently under development of functional units for working with triaxial gyro, luxometer, and other transducers and sensors. Work is also underway on the organization of data exchange via the radio channel and Wi-Fi. In future plans. development of SCADA system for the organization of the interface systems developed in the program FLProg on a personal computer or graphic displays.

The list of peripherals supported by the program, available here

For part of the equipment in the section of the site contains review articles that facilitate the understanding of its application in the program.

In the upper part of the working area is a list of tags (variables and inputs / outputs) (FBD) or installed equipment (LAD). Tags or equipment are transferred to the diagram by dragging and dropping.

In the upper part of the working area is a list of tags (variables and inputs / outputs) (FBD) or installed equipment (LAD). Tags or equipment are transferred to the diagram by dragging and dropping.For part of the equipment in the section of the site contains review articles that facilitate the understanding of its application in the program.

    

 

After completion of the project is its compilation. After compilation will automatically open the program “Arduino 1.5.7” with the loaded sketch of your project. In the “Arduino IDE 1.5.7” you will need to specify the number of the COM port that is connected to your controller, select it, and then pour in the sketch to the controller. Read more about “Arduino IDE 1.5.7” can be read on the website Arduino.ru.

Where to download FLProg?

On the downloads page.

You can download the program without registering on the website, but for registered users the functionality of the site significantly expands. Registration is very simple and requires only the confirmation email. No other data input is not required.

On the download page of the program always is available in two versions: installer and portable version that requires no installation. If possible, I also post the update file is significantly smaller, allowing you to upgrade from a previous version

Структура и синтаксис языка ArduinoIDE | Учи Урок информатики


setup()

Описание

Функция setup() вызывается при старте скетча. Обычно используется для инициализации переменных, установки режимов работы универсальных выводов (пинов), инициализации библиотек и т.п. Функция setup вызывается только один раз — после подачи питания или после сброса (нажатия на кнопку reset) платы Arduino.

Пример

1
2
3
4
5
6
7
8
9
10
11
12
int buttonPin = 3;
 
void setup()
{
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}
 
void loop()
{
  // ...
}

к содержанию ->>

loop()

Описание

После завершения вызова функции setup(), начинает вызываться функция loop().

При этом вызов loop() в точности соответствует ее названию — после завершения выполнения ее тела, она будет вызываться снова и снова — и так до бесконечности. Таким образом обычно обеспечивается «активная» часть скетча, анализирующая состояние платы и выполняющая соответствующие действия.

Пример

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int buttonPin = 3;
 
// setup инициализирует последовательный порт и кнопку
void setup()
{
  beginSerial(9600);
  pinMode(buttonPin, INPUT);
}
 
// в цикле проверяется состояние кнопки,
// в последовательный порт будет отправлено сообщение, если она нажата
void loop()
{
  if (digitalRead(buttonPin) == HIGH)
    serialWrite('H');
  else
    serialWrite('L');
 
  delay(1000);
}

к содержанию ->>

; точка с запятой

Описание

Используется для завершения строки.

Пример

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

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду. Входной информацией для компилятора (исходный код) является описание алгоритма или программа на объектно-ориентированном языке (например ArduinoIDE), а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (0101000111100100010011111100010101).

к содержанию ->>

{} фигурные скобки

Описание

Фигурные скобки (часто их называют просто «скобки») — важная конструкция языка программирования C. Иногда они вызывают затруднения у начинающих, поэтому их использование будет проиллюстрировано ниже.

Открывающая фигурная скобка «{» должна всегда иметь соответствующую закрывающую — «}«. ArduinoIDE  имеет специальную возможность проверки парности скобок. Для этого выделите скобку или установите курсор сразу за ней — и тогда будет подсвечена её пара. 

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

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

{} — используются для обхвата так сказать кода внутри этих скобок к чему либо (функции/классу/условию/циклу и т.д. и т.п). Фигурные скобки «открывают» и «закрывают» ту часть кода, которая относится к некоторой функции/классу/условию/циклу и т.д. и т.п.

Пример

1
2
3
4
5
6
void print(){
Serial.print("Hello WORLD!");
}
void setup(){
F();
}

к содержанию ->>

Комментарии

Описание

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

Компилятор — Компьютерная программа, выполняющая компиляцию (ArduinoIDE например).

Основная функция комментариев — помочь разобраться (или вспомнить), как работает программа или объяснить другим, что она делает. Существует два разных стиля написания комментариев:

Пример

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int x;
int gwb=10;
void setup(){
x = 5;  // Это - однострочный комментарий. Всё, что после двух слэшей - комментарий,
                  // до конца строки
 
/* это - многострочный комментарий - можно использовать для "комментирования" фрагментов программы
 
if (gwb == 10){   // однострочный комментарий - это нормально внутри многострочного
x = 3;
}           /* но многострочный комментарий не допускает вложенности - это не будет компилироваться */
 
Serial.print(x) //будет отображено 5 а не 3
}
// не забудьте "зкарывающий" знак комментария - они должны быть сбалансированы
 

к содержанию ->>

#define

Описание

#define часто используется для определения значения имен констант до начала компиляции программы. Константы, которые определены таким образом, ничего не занимают в памяти микроконтроллера — компилятор подставит значения вместо имен во время компиляции.

Работа команды #define string1 string2 сравнима с операцией НАЙТИ и ЗАМЕНИТЬ в любом текстовом редакторе. До компиляции программы среда ArduinoIDE находит в тексте программы строку  string1 и заменяет ее на  string2

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

В общем случае, для объявления констант следует использовать ключевое слово const

Синтаксис

1
#define constantName value
1
#define ledPin 10;    // это ошибка
1
#define ledPin  = 3  // это тоже ошибка

к содержанию ->>

#include

Описание

#include используется для подключения к скетчу внешних библиотек. Это дает возможность программисту не только использовать обширный инструментарий стандартных библиотек C, но и подключать библиотеки Arduino.

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

Пример

Этот пример подключает библиотеку, которая позволяет управлять Сервомоторами.

1
2
3
4
5
6
#include <Servo.h> //"подключаем" библиотеку для управления сервомоторами
 
Servo myservo;  // создать объект Servo
                // 12 объектов Servo может быть создано на одной плате
 
int pos = 0;    // переменная pos приравнивается к нулю

к содержанию ->>


Пожалуйста, оцените статью

4.2 из 5. (Всего голосов:260)



Какие языки программирования можно использовать с Arduino?

Готовы попробовать что-то другое со своим Arduino? Вам не нужно ограничиваться программированием на C. Возьмите эти альтернативные языки для тест-драйва.

IDE Arduino является основой идеологии проекта — это пользовательский интерфейс, который пытается превратить сложную задачу изучения языка программирования во что-то, что может сделать любой.Это, безусловно, благородное дело, но вполне может наступить время, когда IDE будет ограничивать ваше творчество.

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

Важно найти язык, который говорит с вами и о целях, которых вы хотите достичь.

Arduino построен на простом языке программирования, который приветствует новичков, но если у вас действительно мало опыта, возможно, стоит попробовать такой инструмент, как ArduBlock.Вместо того, чтобы печатать свой код, вы сможете визуально построить свою программу, используя тот же набор функций, что и обычно.

Он отлично подходит для молодых пользователей, но не думайте, что это «Arduino для детей».У некоторых людей просто есть мозг, который лучше работает с визуальными стимулами — и хотя ArduBlock далек от эстетики с точки зрения пользовательского интерфейса, он представляет собой очень логичный способ написания кода для визуальных обучающихся. В то же время вы все еще знакомитесь с именами функций и переменными, которые вам понадобятся, если вы решите перейти на полную IDE Arduino.

ArduBlock — это загружаемый инструмент, который работает как наложение официальной среды разработки Arduino.Конечный продукт не будет отличаться от программы, созданной с использованием обычного процесса, так что это отличный первый шаг, если вы только начинаете. Для тех, кто не совсем готов сразу выучить язык программирования, это отличный способ изучить ключевые концепции, не вдаваясь в технические детали программирования.

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

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

Один из приемов установки Snap4Arduino заключается в том, что на вашем Arduino должна быть установлена ​​ StandardFirmata .Если на вашем компьютере уже установлена ​​Arduino IDE, в этом легко разобраться — просто откройте ее и перейдите к Files > Примеры > Firmata > StandardFirmata . Загрузите его на свою доску, и вы сможете взаимодействовать с ним из Snap4Arduino. Обратите внимание, что вы не можете компилировать программы, созданные в Snap, просто взаимодействовать с Arduino, когда он подключен к вашему компьютеру.

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

Вы можете запустить CmdMessenger либо в Microsoft Visual Studio, либо в эквивалентной сторонней альтернативе.Оттуда вы можете обмениваться данными между вашим ПК и Arduino с помощью C #, так что вы можете выполнять такие вещи, как вызов функций, а также отправлять и получать команды.

Другой способ программирования на C # — использовать специализированное ответвление устройства, такое как Netduino.Поскольку он построен на .NET Micro Framework, Netduino изначально запускает C # прямо из коробки. Хотя расположение выводов совместимо с щитами Arduino, это совершенно другой микроконтроллер, и поэтому он не подходит, если вы хотите программировать на C # на уже имеющейся у вас Arduino.

Хотя ваш Arduino не может запускать код, написанный на Python, из коробки, можно использовать Python для связи с устройством через последовательный ввод.Это очень просто в Unix-подобной системе, но если вы используете ПК или Mac, тогда pySerial может восполнить пробел. Вы можете загрузить pySerial с веб-сайта разработчиков, на котором также есть множество информации о запуске программного обеспечения в различных операционных системах — убедитесь, что у вас есть копия Python в вашей системе.

Вы можете найти дополнительную информацию о чтении и записи данных в Arduino через pySerial на Arduino Playground, но имейте в виду, что это довольно продвинутый метод.Если вы уже хорошо разбираетесь в Python, то, вероятно, у вас будет хорошее представление о том, как его запустить и запустить, но если вы относительно новичок в языке или Arduino, есть более мягкие способы начать чем это.

При этом Python очень хорошо подходит для использования вместе с Arduino.Это интуитивно понятный язык кодирования, поэтому его часто рекомендуют в качестве ступени к другим формам кодирования. Более того, если вам когда-нибудь случится перейти от Arduino к аналогичному Raspberry Pi, вы обнаружите, что ваш Python опыт очень пригодится.

Успешно ли вы использовали другие языки программирования или IDE с вашим Arduino? Сообщите нам об этом в разделе комментариев ниже.

Кредиты изображений: программный код через Shutterstock

Как найти скрытые камеры с помощью мобильного телефона

Обеспокоены слежкой? Вот как найти скрытые камеры с помощью мобильного телефона.

Об авторе Брэд Джонс (109 опубликованных статей)

Английский писатель, в настоящее время проживающий в США. Найдите меня в Твиттере через @radjonze.

Более От Брэда Джонса
Подпишитесь на нашу рассылку новостей

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

Еще один шаг…!

Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.

Язык Arduino — Код: Robotics

Робот RedBot запускает программы, написанные на языке программирования под названием Arduino.

Язык Arduino разработан, чтобы упростить написание программ для микроконтроллеров, которые представляют собой небольшие недорогие компьютеры с низким энергопотреблением, управляющие физическими входами и выходами (такими как датчики, освещение, двигатели и т. Д.).).

Печатная плата Arduino Uno

Микроконтроллер содержит процессор (CPU), память (RAM), хранилище (Flash) и контакты ввода / вывода. Микроконтроллер на базе Arduino интегрирован в печатную плату, которая обычно также имеет:

  • USB-порт (для передачи данных и / или для питания)

  • Вход источника питания (для использования питания от батареи вместо питания USB)

  • контакты ввода / вывода (для подключения проводов датчиков и т. Д.)

  • один или несколько встроенных светодиодных индикаторов (для индикации наличия питания на устройстве и т. Д.))

  • одна или несколько встроенных кнопок (для перезагрузки устройства и т. Д.).

Микроконтроллер не имеет клавиатуры, монитора или других периферийных устройств, которые обычно используются в полноразмерных компьютерах. Микроконтроллер также намного менее мощный, чем полноразмерный компьютер: микроконтроллер имеет более медленный процессор, меньше памяти, меньше памяти и т. Д.

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

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

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

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

USB-соединение также может использоваться для передачи данных между вашим роботом и вашим компьютером во время работы программы на роботе. Эти данные могут отображаться на последовательном мониторе, доступном в редакторе кода Arduino. Это можно использовать как способ устранения неполадок в программах (путем отображения сообщений или данных) или для проверки правильности работы датчиков (путем отображения измерений датчиков).

Несмотря на то, что устройства Arduino, такие как ваш робот, могут хранить и запускать только одну программу за раз, вы можете создать и сохранить нескольких программ в своей учетной записи Arduino (при использовании онлайн-редактора Arduino Create) или на ваш компьютер (при использовании настольного редактора Arduino IDE).

Программа (или приложение) Arduino также называется скетчем , потому что язык Arduino разработан, чтобы позволить вам быстро создавать программы — точно так же, как скетч — это быстрое рисование.

Справочник по языку программирования Arduino полезен для понимания структуры и синтаксиса кода Arduino.

Все программы Arduino должны включать эти две основные функции:

  • Setup Function — которая будет запускаться только один раз при первом запуске вашей программы. Операторы кода, добавленные в функцию setup () , выполняют одноразовые действия при запуске, такие как: установка режимов вывода для входов и выходов устройства, инициализация настроек и т. Д.

  • Функция цикла — которая запускается после завершения функции setup () , а затем повторяется в бесконечном цикле (до выключения устройства). Операторы кода, добавленные в функцию loop () , выполняют основные задачи программы вашего устройства.

 

void setup () {

}

void loop () {

}

На самом деле, если вы хотите, чтобы ваше устройство выполняло только одну задачу — время, вы можете перечислить весь свой код внутри функции setup () и просто оставить функцию loop () пустой.Однако почти во всех случаях вы помещаете код для своих задач в цикл loop () , чтобы устройство могло непрерывно выполнять любые задачи, на которые вы его запрограммировали.

Если ваше устройство перезапущено — нажатием кнопки «сброса» или выключением и последующим включением питания — программа устройства запустится заново, запустив функцию setup () один раз, а затем запустив цикл . () функционируют повторно.

Вот два простых требования, которым необходимо следовать при кодировании программы Arduino:

  1. Ваша программа должна иметь функцию setup () и функцию loop () , даже если внутри нее нет кода. или обе эти функции.

  2. Ваша программа не может иметь более одной функции setup () или более одной функции loop () .

Помимо необходимых функций setup () и loop () , большинство программ Arduino также будут иметь:

  • библиотеки , которые включены в качестве «ссылок» в самом начале программы. . Эти внешние библиотеки кода предоставляют дополнительные функции, которые может использовать ваша программа.Например, ваши программы роботов должны включать библиотеку SparkFun RedBot.h , в которой есть методы (функции), используемые для управления двигателями и датчиками RedBot.

  • глобальные переменные и объекты — которые обычно объявляются перед функцией setup () . Эти переменные используются для хранения данных, которые будут использоваться в функциях вашей программы. В вашей программе робота некоторые из ваших переменных будут объектами, созданными из классов, определенных в библиотеке RedBot.

  • пользовательские функции — которые обычно перечислены в самом конце вашей программы, после функции loop () . Пользовательские функции используются для содержания кода, который выполняет определенные задачи. Пользовательские функции не являются обязательными, но они могут помочь разбить ваш код на более мелкие модули, которые легче понять (и легче использовать повторно). Код внутри пользовательской функции запускается только в том случае, если и когда пользовательская функция «вызывается» в рамках функции setup () или loop () .Пользовательская функция также может быть «вызвана» внутри другой пользовательской функции.

  • комментарии — которые могут быть встроены в программу везде, где они могут быть полезны. Комментарии — это просто примечания, которые помогают объяснить код людям, читающим программу. Комментарии необязательны, но они могут помочь прояснить части кода для вас или других. Любые комментарии в программе игнорируются, когда программа компилируется и загружается на устройство. Комментарии могут быть однострочными или блочными (многострочными).

Подводя итог, вот типичная структура кода (в порядке) для программы Arduino:

  1. Комментарии (могут быть встроены в программу)

  2. Включенные библиотеки (при необходимости)

  3. Глобальные переменные и объекты

  4. Функция настройки (требуется — должна иметь одну и только одну настройку)

  5. Функция цикла (требуется — должна иметь один и только один цикл)

  6. Пользовательские функции (необязательно — может иметь много до необходимо)

Вот пример простой программы Arduino, поэтому вы можете увидеть, как структура ее кода следует этому шаблону:

 

#include

const int динамик = 9;

Кнопка RedBotButton;

void setup () {

pinMode (динамик, ВЫХОД);

}

void loop () {

if (button.read () == true) {

singleBeep ();

}

}

void singleBeep () {

тон (динамик, 3000);

задержка (200);

noTone (динамик);

}

Для сравнения — модифицированная версия той же программы.Он выполняет ту же задачу , что и , за исключением того, что программа не включает никаких комментариев, библиотек, глобальных переменных или пользовательских функций. В нем просто есть функции setup () и loop () :

 

void setup () {

pinMode (12, INPUT_PULLUP);

pinMode (9, ВЫХОД);

}

void loop () {

if (digitalRead (12) == LOW) {

тон (9, 3000);

задержка (200);

noTone (9);

}

}

Хотя эта вторая версия программы, очевидно, намного более лаконична, на самом деле сложнее понять, что программа должна делать.Это одна из причин (среди многих других), почему комментарии, библиотеки, переменные и пользовательские функции полезны в программировании.

Лучшие языки программирования для Arduino — блог FreelancingGig

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

ArduBlock — Arduino построен на языке прямого программирования, который предназначен для дружественного к новичкам, однако, если у вас на самом деле небольшой опыт, стоит попробовать инструмент, похожий на ArduBlock.В некоторой степени, вместо того, чтобы печатать свой код, вы сможете визуально создавать свою программу, используя тот же набор функций, что и обычно.

Arduino — это выдающийся первый встраиваемый прогресс-комплект, предлагающий отличный обзор электроники и способный вовлечь детей в программирование. Дэвид считает, что бросать Cat непрограммистов — не лучший способ научиться программировать, поэтому он разработал ArduBlock, графический язык программирования для Arduino.

Snap4Arduino — Snap4Arduino, основанный на графическом языке программирования перетаскивания мышью, созданном в Беркли, предлагает несколько иной опыт по сравнению с ArduBlock.Техника создания черновиков остается во многом схожей в визуальном дизайнере, однако ясно, что это программное обеспечение рассчитано на несколько более старую аудиторию.

Этот модуль Arduino использует предыдущие схемы и коды, а также применяет их к новой программе под названием Snap4Arduino. Snap4Arduino позволяет нам упаковать плату Arduino в атмосфере, аналогичной Scratch, которая хорошо известна простотой, с которой может быть выполнено ее графическое программирование. В этом разделе вы узнаете, как настроить Arduino для Snap4Arduino, подключиться к Arduino в реальном времени с вашего ПК и адаптировать игровые спрайты, основанные на сигналах от Arduino.Как следует из названия, этот модуль представляет собой схему, поэтому вместо того, чтобы представлять группу новых мыслей, он направлен на то, чтобы предоставить вам отправную точку для интеграции Snap4Arduino в другие модули. Таким образом, этот модуль будет полезен учителям всех уровней.

Один из приемов установки Snap4Arduino — это деталь, требующая установки Standard Firmata на вашем Arduino. Если к настоящему моменту у вас есть Arduino IDE, подключенная к вашему ПК, в этом легко разобраться, просто откройте ее и перейдите в «Файлы»> «Экземпляры»> «Фирмы»> «Стандартные данные».Загрузите его на свою доску, и вы сможете взаимодействовать с ним из Snap4Arduino. Обратите внимание, что вы не можете составлять учебные планы, созданные в Snap, просто взаимодействуйте через Arduino, но он подключен к вашему компьютеру. Вы можете нанять фрилансеров для изучения лучших языков программирования для Arduino

.

C # — Последовательная связь обеспечивает удобный и гибкий способ подключения Arduino к компьютеру. Вы, вероятно, уже пробовали использовать эту функциональность в своих ранних испытаниях устройства.С помощью библиотеки, подобной CmdMessenger, вы сможете выйти на улицу, используя последовательный порт, чтобы просто просмотреть свой эскиз Arduino, а также начать использовать его для кода на совершенно другом языке. Вы можете запустить CmdMessenger либо в Microsoft Visual Studio, либо в эквивалентной сторонней программе. Оттуда вы можете общаться со своим ПК и Arduino с помощью C #, так что вы можете делать что-то подобное с функциями вызова и отправлять и получать команды.

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

Вы можете запускать CmdMessenger в любой Visual Studio от Microsoft в противном случае эквивалентную замену стороннего производителя. Оттуда вы можете общаться между вашим ПК и Arduino, используя C #, таким образом, вы можете выполнять такие вещи, как функции вызова, а также отправлять и получать команды. Вы можете нанять внештатных сотрудников для поиска лучших языков программирования для Arduino

.

Python — В то время как ваш Arduino не может запускать код, напечатанный на Python, из коробки, он, вероятно, будет использовать Python для связи устройства через последовательный ввод.На самом деле это просто для Unix-подобной схемы, однако, если вы используете ПК или Mac, тогда python может восполнить пробел. Вы можете загрузить python с веб-сайта его разработчика, который, кроме того, содержит массу информации о запуске программного обеспечения в различных операционных системах, что гарантирует наличие копии Python в вашей схеме.

Будущее принадлежит приложениям и службам, которые включают подключенные устройства, необходимые физические компоненты для подключения к приложениям веб-уровня.Соединение Arduino с широко распространенным программным обеспечением с открытым исходным кодом Python может быть использовано для развития следующего уровня радикальных схем Интернета вещей с графическими пользовательскими интерфейсами и приложениями, связанными с Интернетом.

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

Java

Arduino — это широко распространенная бесплатная платформа для укоренившегося программирования, основанная на простой плате ввода-вывода, которую можно легко программировать. Взаимодействие с ним через Java позволяет нам создавать сложные интерфейсы, а также пользоваться преимуществами многочисленных API, доступных в экосистеме Java.

Сама среда Arduino IDE написана на Java и может подключаться к последовательному порту через библиотеку RXTX Java.Эта библиотека на самом деле похожа на расширение Java Communications API. Внутри IDE вспоминает, какой порт плюс скорость передачи вы использовали в прошлый раз. Неуместно, что внутреннее выполнение не может быть измерено публичным API, который вы могли бы надежно использовать. Таким образом, вам придется сохранить свои собственные настройки, чтобы вспомнить, какой COM-порт использует ваша карта Arduino.

В этом пограничном примере предполагается, что вы уже знаете, как компилировать и запускать код Java. В Интернете достаточно других ресурсов, чтобы научить вас программировать на Java.Наиболее вдумчивый Java-программист использует Java IDE для создания Java-программ, аналогично бесплатной Eclipse IDE, однако этот пример предлагает информацию для менее повторяющегося Java-программиста.

Китти Гупта — менеджер по контенту и сообществу FreelancingGig. У нее многолетний опыт написания статей для авторитетных платформ, а также ее инженерный и коммуникационный опыт.

Последние сообщения Китти Гупта (посмотреть все)

графических языков Arduino »Raspberry Pi Geek

Программирование Arduino с использованием языка C-типа Processing — сложная задача.C неумолим и может быть загадочным, что затрудняет обучение новичков и детей. К счастью, несколько графических языков программирования, таких как Squeak или Scratch, могут помочь вам изучить основы языка обработки.

Еще до того, как Raspberry Pi (Rasp Pi) был блеском в глазах Эбена Аптона, Arduino уже использовался в образовании, хотя изначально для высшего образования и профессионалов. Поскольку Arduino становился все более и более популярным, было неизбежно, что кто-то где-нибудь придет в голову идея использовать его для младших школьников.Для достижения этой цели за прошедшие годы появилось несколько проектов, похожих на Squeak / Scratch, которые могут помочь новичкам и детям младшего возраста разобраться в программировании для Arduino. Обсуду некоторые из них.

BlocklyDuino

BlocklyDuino [1] основан на проекте библиотеки Google Blockly [2], который позволяет разработчикам создавать графические интерфейсы на основе блоков для любого языка или, в данном случае, устройства. Например, Rasp Pi имеет реализацию Blockly [3].

Для начала либо возьмите код для BlocklyDuino с веб-сайта GitHub, либо используйте git для клонирования репозитория:

 git clone https: // github.com / BlocklyDuino / BlocklyDuino.git 

BlocklyDuino работает путем подключения к веб-серверу Python, который служит интерфейсом для веб-браузера, а затем использует инструменты из Arduino IDE для компиляции и загрузки ваших программ. Это означает, что для работы BlocklyDuino у вас должна быть установлена ​​рабочая версия официальной IDE Arduino.

Теоретически, когда вы запускаете веб-сервер Python, он должен уметь определять порт, к которому подключена ваша плата, но у меня это не сработало. Однако вы можете указать порт вручную: подключите плату к компьютеру и, в Raspbian и других Linux, посмотрите вывод:

 ls / dev / tty * 

Обычно ваша плата будет отображаться подключенной к порту / dev / ttyACM0 или / dev / ttyACM1 , или как-то так.Теперь передайте порт на сервер, когда вы его запустите:

 python arduino_web_server.py --port = / dev / ttyACM0 

Вывод сообщит вам, что сервер работает на 127.0.0.1:8080 . Откройте веб-браузер и посетите этот адрес, и вы увидите веб-интерфейс BlocklyDuino (рисунок 1).

Если вы когда-либо использовали Scratch, интерфейс должен сразу быть вам знаком: используйте меню слева, чтобы выбрать категорию и перетащить блоки в рабочую область. Затем вы можете щелкать их вместе, как кубики Lego, чтобы создавать программы.В примере, показанном на рисунке 1, вы можете увидеть классический сценарий «Blink».

Рисунок 1: BlocklyDuino включает специальные блоки, которые позволяют вам программировать для ряда надстроек Grove.

При нажатии кнопки Загрузить в верхней части рабочего пространства эскиз загружается на доску. Вы также можете увидеть, как будет выглядеть код, переведенный на собственный язык обработки Arduino. Щелкните вкладку Arduino в верхней части рабочей области, и вы увидите что-то вроде кода на рисунке 2.На самом деле вы не можете ничего изменить на этом экране, поэтому он более полезен в качестве учебного пособия, чем что-либо еще. Я полагаю, вы также можете использовать его для копирования и вставки кода из BlocklyDuino в IDE Arduino, если у вас возникли проблемы с загрузкой через веб-сервер Python.

Рисунок 2: Используйте вкладку Arduino, чтобы увидеть, как ваш код будет выглядеть в обработке.

Внутри BlocklyDuino использует XML-файл для хранения «кода», поэтому, если вы хотите сохранить свою работу и позже продолжить, вы должны использовать кнопки Сохранить XML и Загрузить XML .Вы также можете экспортировать свою работу в файл, совместимый с Arduino, но это полезно только в том случае, если вы хотите продолжить работу над ним в среде Arduino IDE, потому что вы не можете пойти другим путем (например, от кода Arduino к BlocklyDuino) .

Хотя вы не можете импортировать настраиваемые библиотеки в BlocklyDuino, он имеет некоторые встроенные возможности. Если вы вытащите один из блоков под Servo , например, BlocklyDuino автоматически импортирует библиотеку Servo.h . BlocklyDuino также включает блоки для многих надстроек Arduino Grove , включая исполнительные механизмы (кнопки, зуммеры, джойстики и т. Д.).) и датчики, которые легко подключаются к Arduino. Поскольку новички и дети, которые учатся использовать Arduino, используют надстройки Grove, имеет смысл поддержать их.

А на Raspberry Pi он работает? Да. Сервер довольно легкий, поэтому он не слишком утомляет Rasp Pi 3 (RPi3). Вам нужно будет установить Firefox ESR ( sudo apt-get install firefox-esr ), чтобы все биты JavaScript работали. Имея в прошлом неудачный опыт работы с веб-приложениями, насыщенными JavaScript, я подумал, что BlocklyDuino может связать Pi, но нет: все работало очень гладко.

Ardublockly

Другой язык Blockly Arduino, Ardublockly [4], очень похож на BlocklyDuino, что неудивительно, поскольку он является его форком. Однако у него есть некоторые отличительные особенности, на которые стоит обратить внимание.

Для начала возьмите последний код из репозитория GitHub проекта, перейдите в каталог ardublockly / и инициализируйте несколько подмодулей:

 git clone https://github.com/carlosperate/ardublockly.git
cd ardublockly
git submodule update --init --recursive 

Как и в случае с BlocklyDuino, вы запускаете сервер / приложение из основного каталога:

 старт питона.py 

Хотя BlocklyDuino требует от вас перехода на веб-страницу, Ardublockly открывает для вас окно браузера (рисунок 3) или новую вкладку, если у вас уже открыт браузер по умолчанию. Если это не удается, вы можете указать в своем браузере http: // localhost: 8000 / ardublockly / .

Рисунок 3: Ardublockly включает блоки, которые позволяют записывать и читать из последовательного канала.

После того, как у вас есть интерфейс в браузере, первое, что вам нужно сделать, это настроить его для вашей платы.Щелкните значок трехстрочного меню в верхнем левом углу и выберите Настройки . Здесь вы сможете указать Ardublockly, где он может найти исполняемый файл Arduino (да, как и в случае с BlocklyDuino, ArduBlockly нужны стандартные файлы IDE Arduino для компиляции и загрузки ваших программ), тип используемой платы, порт, к которому она подключена. к и так далее (рисунок 4). Предупреждаем, что интерфейс в Firefox работал так себе. Намного лучше он работал в Chromium и Chrome.

Рисунок 4: Обязательно настройте свою плату; в противном случае вы не сможете загружать свои программы.

Используйте кнопки в правом верхнем углу рабочей области, чтобы проверить и загрузить свою программу. У вас также есть возможность открыть свой скетч в среде Arduino IDE.

Ardublockly не включает блоки Grove System, но у него есть блоки более общего назначения, в том числе те, которые позволяют отслеживать, читать и записывать в последовательный канал (полезно для отладки). Однако у Ardublockly, похоже, нет собственного монитора последовательного порта, поэтому вам придется использовать упомянутую выше кнопку, чтобы открыть свою программу в официальной среде Arduino IDE и использовать монитор, поставляемый с ней (рисунок 5).

Рисунок 5: Ardublockly не имеет собственного монитора последовательного порта, но может отображать выходные данные Arduino IDE.

Еще одним приятным моментом является то, что Ardublockly поставляется с откидной панелью в нижней части экрана, которая может отображать выходные данные Arduino IDE. Это полезно, если, например, у вас возникли проблемы с загрузкой эскиза или он не работает должным образом.

Работает ли он на Rasp Pi? Вроде. Похоже, что сервер не сильно тормозит RPi3, но, как и в случае с Blocklyduino, вам придется установить Firefox ESR, чтобы заставить работать все возможности JavaScript.Однако даже в Firefox у меня были проблемы с некорректным поведением некоторых элементов интерфейса или их отсутствием.

Получите Arduino и научитесь программировать

Arduino Uno

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

Это все хорошие вопросы, но они упускают из виду суть того, что вам нужно изучить: программировать.

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

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

Отправной точкой для этого является приобретение Arduino. Arduino (известный как Genuino за пределами США и Великобритании) — это одноплатный компьютер. Он не работает под управлением Windows, MacOS или Linux. Он просто запускает вашу программу, которую ребята из Arduino называют скетчем (а остальные называют скриптом).

Что внутри Arduino Starter Kit

Вы можете купить Arduino Uno всего за 25 долларов, но я рекомендую вам купить Benjamin (сто долларов) для Arduino Starter Kit.Этот комплект содержит процессор Arduino и массу дополнительных аппаратных компонентов.

Набор разработан, чтобы помочь вам быстро освоить создание устройств Arduino. Он включает в себя хороший выбор интересных вещей, начиная от макета и заканчивая ЖК-дисплеем, датчиком температуры и многим другим. В комплект также входит 15 стартовых проектов. Я рекомендую вам эти проекты.

Вот в чем дело. По сути, программирование — это использование последовательности инструкций, чтобы заставить какое-либо физическое оборудование что-то делать.Будь то в облаке или на вашем рабочем месте, все кодирование действительно заставляет оборудование изменять свое состояние, свое состояние.

Когда вы научитесь делать наброски Arduino и строить проекты Arduino, вы очень близко подходите к этой фундаментальной реальности и получите гораздо лучшее интуитивное понимание того, что происходит, когда вы пишете строку кода.

Для написания скетчей Arduino вам понадобится традиционный компьютер. Среда программирования Arduino написана на Java и будет работать на компьютерах Mac, ПК и Linux.Вы пишете с помощью клавиатуры, мыши и дисплея на своем компьютере, а затем загружаете код в Arduino для запуска. Не волнуйся. Все дело в USB-соединении, и оно работает хорошо.

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

Во-первых, язык программирования Arduino основан на традиционных стандартах кода C / C ++. Так что, если вы научитесь программировать что-то для своего Arduino, у вас уже будет преимущество в наиболее часто используемой категории языков программирования.

Итак, как только вы выполните несколько проектов с помощью Arduino, вы окажетесь в идеальном месте для изучения других языков программирования. Единственная разница в том, что вы хорошо почувствуете, как программирование вписывается в общую систему, составляющую компьютер и устройство. ЭТИ знания могут помочь вам понять НАМНОГО больше о программировании в долгосрочной перспективе.

Во-вторых, многие очень крутые вещи создаются с использованием Arduinos в качестве контроллеров. Если вы хотите попробовать, посетите xrobots.co.uk и ознакомьтесь с некоторыми проектами, над которыми работает Джеймс Брутон.Он построил костюм Халкбастера и трех роботов BB-8. В настоящее время он работает над шагающим роботом и управляемым движением торсом Альтрона. Связывая кругозор с другими моими колонками, Брутон строит большинство физических компонентов своих проектов с помощью 3D-печати.

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

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

Вперед. Делайте отличные вещи. Если вы создадите что-нибудь крутое, расскажите мне об этом в TalkBacks ниже.

Вы можете следить за обновлениями моего проекта в социальных сетях.Обязательно подпишитесь на меня в Twitter на @DavidGewirtz, на Facebook на Facebook.com/DavidGewirtz, на Instagram на Instagram.com/DavidGewirtz и на YouTube на YouTube.com/DavidGewirtzTV.

XOD — новый язык визуального программирования для Arduino

Языки визуального программирования не новы, я впервые познакомился с системой под названием AVS, когда я работал в GEC-Marconi в начале девяностых. Хотя наиболее известным и давно существующим, вероятно, является LabView.

Однако за последние несколько лет визуальные инструменты, похоже, переживают ренессанс. Это вызвано, по крайней мере частично, растущей популярностью и сообществами, которые сформировались вокруг двух очень разных визуальных инструментов, Node-RED и Scratch.

Войдите в XOD, новый язык визуального программирования для Arduino, который только что был выпущен в мир его создателями.

Робот с лазером, управляемый Arduino, тремя сервоприводами SG90 и программой XOD. (📷: XOD)

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

Простая программа XOD (слева), которая контролирует датчик влажности и отображает результат в процентах на ЖК-экране. (📷: XOD)

XOD, однако, столкнется с жесткой конкуренцией, поскольку и Node-RED, и Scratch поддерживают Arduino в разной степени.Как и на рынке плат, где каждая новая плата объявляется «убийцей Arduino» или «убийцей Raspberry Pi», свержение лидеров означает создание сообщества. Лично я считаю, что сообщество — по крайней мере в наши дни — самый большой фактор, определяющий, будет ли технология успешной или нет.

Программа XOD, отслеживающая датчик влажности и запускающая насос. (📷: XOD)

Однако и Node-RED, и Scratch требуют загрузки специальных эскизов на доску. Node-RED использует Firmata, а вилка Scratch S4A, поддерживающая Arduino, использует собственный скетч.Это означает, что ваш ноутбук должен оставаться подключенным к Arduino — и здесь XOD отличается.

В подходе XOD мне очень нравится то, что он генерирует собственный код для целевой платформы. В автоматически сгенерированных эскизах много шаблонного кода, но нет необходимости в Firmata или подключенном ноутбуке для управления платой. Он работает на Arduino, как если бы он был запрограммирован с помощью собственных инструментов.

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

Язык программирования Arduino: какой это?

Хотите знать, какой язык программирования вы должны выучить для программирования Arduino? Короткий ответ — C ++ , но если вы хотите знать, почему это не очевидно и почему до сих пор существует довольно много разных ответов…

Давайте начнем с конца

В основе большинства плат Arduino ложь микроконтроллеры производства Atmel, в частности, из их семейства AVR.Единственные команды, которые действительно понимают эти микросхемы, — это набор инструкций AVR — относительно небольшой набор команд сборки. Вы можете найти их в таблице данных микроконтроллера.

Часть набора команд ATmega328 (взято из таблицы данных)

Если вы действительно увлечены этим, вы можете изучить этот язык и запрограммировать Arduino прямо на нем. Однако для большинства приложений вы захотите написать свою программу на «более высоком», более продвинутом и удобном языке, таком как C, C ++, Python, Pascal, даже Basic или Ada.Именно здесь на помощь приходят компиляторы: это компьютерные программы, которые берут ваш код на более высоком языке и преобразуют его в команды набора инструкций AVR, чтобы Arduino мог их понять и запустить.

Интегрированная среда разработки Arduino

Хорошие люди, разработавшие программное обеспечение Arduino, выбрали, вероятно, наиболее распространенное решение в отрасли на сегодняшний день: язык программирования C ++. Под капотом скромной интегрированной среды разработки Arduino (IDE) скрывается компилятор WinAVR, который на самом деле является версией знаменитого компилятора GCC, используемого в основном для компиляции программ на C и C ++.

Если вы посмотрите на файлы глубоко в каталоге установки Arduino на вашем компьютере — например, в Windows, по адресу … \ hardware \ arduino \ avr \ cores \ arduino — вы найдете файлы исходного кода с постфиксом .cpp (т.е. C P lus P lus). Откройте их в текстовом редакторе, и вы увидите, что они действительно написаны на C ++. Кроме того, если вы уже знаете C ++, вы можете написать в нем свой код Arduino и убедиться, что он компилируется нормально.

Часть исходного кода Arduino.Да, это C ++

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

Программирование Arduino на C

Если — извините, я имею в виду AS 😉 — вы следите за этим блогом, вы увидите, что даже я много буду говорить о программировании на C в контексте Arduino. Хотя C НЕ является «подмножеством C ++», в большинстве аспектов он очень, очень похож на один, и нам крайне редко понадобятся расширенные функции C ++, поэтому для всех практических целей мы можем безопасно программировать Arduino, как если бы мы работали с чистым C.

Собственный язык

«Погоди, — я слышу, вы скажете, — если программы Arduino (« эскизы ») написаны на C ++, почему у них есть постфикс .ino ? Почему в них нет обязательной функции main ? И, что наиболее важно, почему официальный сайт Arduino утверждает, что «язык Arduino основан на на C / C ++»? » [выделено мной]

Во-первых, микроконтроллеры — это не ПК. например, у них нет жестких дисков и файловых систем.Поэтому функции стандартной библиотеки C ++ для обработки файлов на них не сработают. Разве это отличает язык программирования? Нет. Это все равно что сказать, что если я знаю только немного китайского, а не весь китайский язык, то все, что я знаю, на самом деле не по-китайски. Конечно, это так, просто я ограничен подмножеством языка.

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

Еще одна модификация для начинающих — использование функций setup и loop вместо main . Это просто косметическое изменение: за кулисами компилятор фактически берет ваш код и включает его в правильный скелетный код C ++ с основным, и всем остальным. Вы даже можете написать основную функцию самостоятельно, хотя это нарушит некоторые автоматические функции для этой конкретной программы.

Java, обработка и подключение

В то время как программы Arduino написаны на C ++, IDE Arduino — нет.Он был написан на Java, частично на основе предыдущего и связанного с ним программного обеспечения под названием Processing and Wiring. Они могут быть интересны сами по себе, но это , а не , что вам нужно для программирования платы Arduino.

IDE Arduino: для C ++, а не для C ++

Вкратце

Если вы хотите программировать Arduino, вам нужно немного знать C и / или C ++.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *