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

Arduino и совместимые языки программирования

Что такое Arduino

Если называть вещи своими именами, то Arduino — это конструктор для тех, кому надоело созидать бесполезные образы и захотелось хоть немного наделить их жизнью. В самом простейшем случае Arduino — печатная плата, на которой расположен контроллер, кварцевый генератор, АЦП/ЦАП, несколько разъёмов, диодов и кнопок. Остальное — дело рук хозяина: хотите — создавайте робота, хотите — программно-аппаратную платформу для «умного» дома, ну или забудьте про практическую пользу и развлекайтесь.

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

Arduino достаточно ограниченная платформа в плане возможностей программирования, особенно в сравнении с Raspberry Pi. В силу того, что порог входа неприлично низкий (базовый Tutorial занимает 3 листа формата A4), то рассчитывать на изобилие языков без подключения дополнительных модулей не приходится. За основу здесь принят C/C++, но с использованием различных IDE и библиотек вы получите доступ к оперированию Python, C#, Go, а также таким детским развлечениям, как Snap! и ArduBlock. О том как, когда и кому их использовать, поговорим далее.

Базовый язык платформы Arduino, который с некоторыми доработками и упрощениями используется в стандартной программной оболочке. Найти все доступные команды «для новичка» можно здесь, но никто не мешает вам воспользоваться исходными возможностями языка C++, никаких надстроек не потребуетс. Если же есть желание поиграть с «чистым» C, то к вашим услугам программа WinAVR, предназначенная, как следует из названия, для взаимодействия ОС Windows и МК серии AVR, которые и используются на Arduino. Более подробное руководство можете прочитать вот здесь.

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

Ardublock

Временно отойдем от языков взрослых к любимому ребятней языку Scratch, а вернее к его адаптации — Ardublock. Здесь всё тоже самое, но с адаптацией к вашей платформе: цветные блоки, конструктор, русские названия, простейшая логика. Такой вариант здорово подойдет даже тем, кто с программированием не знаком вовсе. Подобно тому, как в языке Logo вы можете перемещать виртуальную черепашку по виртуальной плоскости, здесь с помощью нехитрых операций вы можете заинтересовать ребенка реальной интерпретацией его программных действий.

Да, кстати, для использования необходимо на вашу стандартную среду Arduino IDE установить плагин. Последние версии лучше не хватать, они довольно сложные, для начала подойдет датированная концом 2013 года. Для установки скачанный файл переименовываем в «ardublock-all» и запихиваем в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если её не существует — создаем. Если что-то не поняли, то вот здесь более подробно.

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

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

Рекомендуется младшей возрастной группе, тем, кто учил программирование так давно, что уже ничего не помнит и тем, кто хочет завлечь своего ребенка в IT через Scratch и Snap!.

Python

Формально программировать на Arduino вы можете используя хоть язык Piet, просто потому что при должном упорстве вы скомпилируете в машинный код что угодно. Но в силу того, что Python — один из наиболее популярных языков с практически оптимальным сочетанием сложность\возможности, то обойти стороной его применяемость в Arduino было бы нелепо. Начать изучение Python вы можете с нашего бесплатного интенсива «Основы языка Python».

Итак, для этого вам понадобится библиотеки PySerial (ранее, возможно, вы использовали её для общения с портами компьютера) и vPython. О том, как правильно всё настроить и заставить в конечном счёте работать, можете соответственно почитать здесь и здесь.

Go и другие языки.

Подобно тому, как Arduino взаимодействует с Python через библиотеку PySerial, он может взаимодействовать и с Go, и c Java, и с HTML, и с чем только захотите. Arduino — достаточно популярная платформа, чтобы такой банальный вопрос, как выбор удобного языка, не остановил очередного исследователя. Единственное, что требуется от владельца этой маленькой платы — задумать что-нибудь удивительно интересное, а удобный инструмент неизбежно найдётся.

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

Что такое Arduino

Если называть вещи своими именами, то Arduino — это конструктор для тех, кому надоело созидать бесполезные образы и захотелось хоть немного наделить их жизнью. В самом простейшем случае Arduino — печатная плата, на которой расположен контроллер, кварцевый генератор, АЦП/ЦАП, несколько разъёмов, диодов и кнопок. Остальное — дело рук хозяина: хотите — создавайте робота, хотите — программно-аппаратную платформу для «умного» дома, ну или забудьте про практическую пользу и развлекайтесь.

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

Arduino достаточно ограниченная платформа в плане возможностей программирования, особенно в сравнении с Raspberry Pi. В силу того, что порог входа неприлично низкий (базовый Tutorial занимает 3 листа формата A4), то рассчитывать на изобилие языков без подключения дополнительных модулей не приходится. За основу здесь принят C/C++, но с использованием различных IDE и библиотек вы получите доступ к оперированию Python, C#, Go, а также таким детским развлечениям, как Snap! и ArduBlock. О том как, когда и кому их использовать, поговорим далее.

Базовый язык платформы Arduino, который с некоторыми доработками и упрощениями используется в стандартной программной оболочке. Найти все доступные команды «для новичка» можно здесь, но никто не мешает вам воспользоваться исходными возможностями языка C++, никаких надстроек не потребуетс. Если же есть желание поиграть с «чистым» C, то к вашим услугам программа WinAVR, предназначенная, как следует из названия, для взаимодействия ОС Windows и МК серии AVR, которые и используются на Arduino. Более подробное руководство можете прочитать вот здесь.

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

Ardublock

Временно отойдем от языков взрослых к любимому ребятней языку Scratch, а вернее к его адаптации — Ardublock. Здесь всё тоже самое, но с адаптацией к вашей платформе: цветные блоки, конструктор, русские названия, простейшая логика. Такой вариант здорово подойдет даже тем, кто с программированием не знаком вовсе. Подобно тому, как в языке Logo вы можете перемещать виртуальную черепашку по виртуальной плоскости, здесь с помощью нехитрых операций вы можете заинтересовать ребенка реальной интерпретацией его программных действий.

Да, кстати, для использования необходимо на вашу стандартную среду Arduino IDE установить плагин. Последние версии лучше не хватать, они довольно сложные, для начала подойдет датированная концом 2013 года. Для установки скачанный файл переименовываем в «ardublock-all» и запихиваем в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если её не существует — создаем. Если что-то не поняли, то вот здесь более подробно.

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

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

Рекомендуется младшей возрастной группе, тем, кто учил программирование так давно, что уже ничего не помнит и тем, кто хочет завлечь своего ребенка в IT через Scratch и Snap!.

Python

Формально программировать на Arduino вы можете используя хоть язык Piet, просто потому что при должном упорстве вы скомпилируете в машинный код что угодно. Но в силу того, что Python — один из наиболее популярных языков с практически оптимальным сочетанием сложность\возможности, то обойти стороной его применяемость в Arduino было бы нелепо. Начать изучение Python вы можете с нашего бесплатного интенсива «Основы языка Python».

Итак, для этого вам понадобится библиотеки PySerial (ранее, возможно, вы использовали её для общения с портами компьютера) и vPython. О том, как правильно всё настроить и заставить в конечном счёте работать, можете соответственно почитать здесь и здесь.

Go и другие языки.

Подобно тому, как Arduino взаимодействует с Python через библиотеку PySerial, он может взаимодействовать и с Go, и c Java, и с HTML, и с чем только захотите. Arduino — достаточно популярная платформа, чтобы такой банальный вопрос, как выбор удобного языка, не остановил очередного исследователя. Единственное, что требуется от владельца этой маленькой платы — задумать что-нибудь удивительно интересное, а удобный инструмент неизбежно найдётся.

Источник

Языки программирования

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

В целом, неважно, с каким именно процессором вы имеете дело: это может быть последний Intel Pentium в вашем ноутбуке или микроконтроллер на плате Arduino. Общие принципы написания программы, т. е. программирования, в обоих случаях одни и те же. Различается лишь быстродействие и объём возможностей по работе с другими устройствами.

Что такое программа и куда её писать

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

Байт инструкции Что он означает для процессора
00001001 означает: взять следующий байт и запомнить его в ячейке №1
00000110 …это как раз следующий байт, который мы запоминаем в ячейке №1: число 5
00011001 означает: отнять от значения в ячейке №1 единицу и оставить там обновлённый результат
00101001 означает: сравнить значение в ячейке №1 с нулём, и если оно ноль — перепрыгнуть через столько байт, сколько указано в следующем байте
00000100 …если результат был ноль, мы хотим прыгнуть через 4 байта, к предпоследней инструкции
10000011 означает, что мы хотим вывести на экран символ, код которого записан в следующем байте
01000001 …букве «A» как раз соответствует этот код
00101000 означает, что мы хотим прыгнуть назад на столько байт, сколько указано в следующем байте
00000110 …прыгать будем на 6 байт назад, к инструкции №3
10000011 означает, что мы хотим вывести на экран символ, код которого записан в следующем байте
00100001 …знаку «!» как раз соответствует этот код

В результате исполнения такой последовательности инструкций на экран будет выведена паническая фраза «АААА!».

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

Зачем нужны языки программирования

Для решения двуединой задачи: упрощения написания и понимания программ человеком, а также для исключения зависимости исходного кода программы от «железа» (от системы команд-инструкций конкретного процессора) были придуманы и созданы языки программирования. Их очень много и даже из тех что постоянно на слуху можно быстро вспомнить десяток-другой: Assembler, C, C++, C#, Java, Python, Ruby, PHP, Scala, JavaScript.

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

Проблема в том, что такие языки непонятны процессору, и перед тем, как дать ему эту программу на выполнение, её нужно транслировать (translate): перевести с естественного языка на язык процессора (на машинный язык). Трансляция-перевод может осуществляться непосредственно слово за словом (выражение за выражением) — это осуществляют программы-интерпретаторы языков (англ. interpreter — истолкователь). Их действие аналогично синхронному переводу, когда переводчики-синхронисты переводят фразы, выражающие законченный смысл, в темпе их произнесения или поступления. Трансляция-перевод может осуществляться и всего текста (листинга) программы целиком — это осуществляют программы-компиляторы (англ. compiler — составитель, собиратель). Их действие схоже с переводом обычных законченных текстов. У каждого языка, если только он не остался на уровне фантазий, есть свой транслятор-переводчик: либо интерпретатор либо компилятор, или и тот, и другой. Для популярных языков их обычно несколько на выбор, от разных производителей и для разных платформ. Большинство из них свободно доступно в интернете.

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

Бинарные файлы непригодны для чтения людьми и предназначены, в общем, лишь для исполнения процессором. Они могут иметь разный тип в зависимости от того, для чего получены: .exe — это файл исполняемой программы для операционной системы Windows, .hex — это файл исполняемой программы, приготовленный для загрузки на выполнение микроконтроллером типа Arduino, т. е. для выполнения практически на «чистом железе» (без ОС и прочих системных программ).

Почему же существует столько языков программирования и в чём разница?

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

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

Язык Java. Пишется относительно долго; читается просто; исполняется довольно быстро, но занимает много памяти:

Язык Assembler. Пишется долго; читается сложно; исполняется очень быстро:

На чём программируется Arduino

Если говорить об Arduino или о микроконтроллерах компании Atmel, на каком языке можно писать программы для них? Теоретический ответ: на любом. Но на практике выбор ограничивается языками Assembler, C и C++. Это связанно с тем, что в сравнении с настольным компьютером у них очень ограниченные ресурсы. Килобайты памяти, а не гигабайты. Мегагерцы на процессоре, а не гигагерцы. Это плата за дешевизну и энергоэффективность.

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

Assembler, как вы видели, нельзя назвать самым простым и элегантным и, естественно, как результат, флагманским языком для Arduino является C/C++.

Во многих источниках говорится, что Arduino программируется на особом языке: Processing, Wiring. Это не совсем корректное утверждение. Контроллер программируется на C/C++, а то, что называется этими словами — это просто удобный «обвес», который позволяет решать многие типичные задачи, скрывая частности и детали, да не изобретая велосипед каждый раз.

Почему C и C++ упоминаются в одном предложении? C++ — это надстройка над C. Всякая программа на C является корректной программой для C++, но не наоборот. Вы можете пользоваться и тем, и другим. Чаще всего вы даже не будете задумываться о том, что используете, решая текущую задачу.

Ближе к делу: первая программа

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

Пойдём по порядку. Напишем исходный код. Можно написать его в блокноте или любом другом редакторе. Однако для того, чтобы работа была удобной, существуют так называемые среды разработки (IDE, Integrated Development Environment). Они в виде единого инструмента предоставляют и текстовый редактор с подсветкой и подсказками, и компилятор, запускаемый по кнопке, и много других радостей. Для ардуинок такая среда называется Arduino IDE. Она свободно доступна для скачивания на нашем сайте.

Установите среду и запустите её. В появившемся окне вы увидите, что большая часть места отдана текстовому редактору. В него и пишется код. Код в мире Arduino ещё называют скетчем (англ. sketch — набросок, эскиз). К слову, «скетч» как имя нарицательное пришло в мир искусства программирования из мира искусства и художников.

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

Не будем пока заострять внимание на значении написанного кода. Скомпилируем его. Для этого в Arduino IDE на панели инструментов есть кнопка «Verify». Нажмите её, и через несколько секунд бинарный файл будет готов. Об этом возвестит надпись «Done compiling» под текстовым редактором.

В результате у нас получился бинарный файл с расширением .hex , который может исполнять микроконтроллер.

Теперь необходимо подсунуть его контроллеру. Этот процесс называется загрузкой, прошивкой или заливкой. Для загрузки полученной программы на устройство в среде Arduino IDE есть кнопка «Upload» на панели инструментов. Соедините вашу плату с компьютером через USB-кабель, нажмите «Upload», и через несколько мгновений программа будет загружена в ардуинку. При этом программа, которая была в контроллере ранее, будет стёрта.

Об успешной прошивке возвестит надпись «Done Uploading».

Если при попытке загрузки вы столкнулись с ошибкой убедитесь, что:

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

Источник

Adblock
detector