Ардуино на чем программировать
Arduino для начинающих. Часть 1
Предисловие
Доброго времени суток, Хабр. Запускаю цикл статей, которые помогут Вам в знакомстве с Arduino. Но это не значит, что, если Вы не новичок в этом деле – Вы не найдёте ничего для себя интересного.
Введение
Было бы не плохо начать со знакомства с Arduino. Arduino – аппаратно-программные средства для построения систем автоматики и робототехники. Главным достоинством есть то, что платформа ориентирована на непрофессиональных пользователей. То есть любой может создать своего робота вне зависимости от знаний программирования и собственных навыков.
Начало
Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:
Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:
Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.
Первая программа
Для того, чтоб лучше понять принцип работы платформы, давайте напишем первую программу. Эту простейшую программу (Blink) мы выполним в двух вариантах. Разница между ними только в сборке.
Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.
Прошивка Arduino
Для того, чтоб залить скетч на Arduino нам необходимо сначала просто сохранить его. Далее, во избежание проблем при загрузке, необходимо проверить настройки программатора. Для этого на верхней панели выбираем вкладку «Инструменты». В разделе «Плата», выберете Вашу плату. Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч. Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.
Прототипирование/макетирование
Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс. На короткую мы будем подключать «землю» (GND) и резистор (для того, чтоб уменьшить силу тока, которая поступает на светодиод, чтоб не спалить его), а на длинную мы будем подавать питание (подключим к 13 пину). После подключения, загрузите на плату скетч, если вы ранее этого не сделали. Код остаётся тот же самый.
На этом у нас конец первой части. Спасибо за внимание.
Языки программирования
Итак, у вас есть процессор. Вы наверняка понимаете, что процессор можно как-то запрограммировать, чтобы он делал то, что вы хотите. Но чтобы сделать какую-то полезную работу, необходимо сперва написать полезную программу и отдать её процессору для исполнения.
В целом, неважно, с каким именно процессором вы имеете дело: это может быть последний 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. Затем они превращаются в понятные процессору наборы нулей и единиц с помощью транслятора (интерпретатора или компилятора), который интерпретирует исходный код и непосредственно выполняет заключённые в нём инструкции, используя ресурсы процессора, а компилятор получает на вход исходный код, а на выходе создаёт бинарный (двоичный) исполняемый файл, тот самый, который понятен процессору и называется исполняемой программой.
Почему же существует столько языков программирования и в чём разница?
Посмотрим на одну и ту же программу, которая выводит на экран песенку про 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» под текстовым редактором.
Теперь необходимо подсунуть его контроллеру. Этот процесс называется загрузкой, прошивкой или заливкой. Для загрузки полученной программы на устройство в среде Arduino IDE есть кнопка «Upload» на панели инструментов. Соедините вашу плату с компьютером через USB-кабель, нажмите «Upload», и через несколько мгновений программа будет загружена в ардуинку. При этом программа, которая была в контроллере ранее, будет стёрта.
Об успешной прошивке возвестит надпись «Done Uploading».
Если при попытке загрузки вы столкнулись с ошибкой убедитесь, что:
Поздравляем! Вы прошли весь путь от чистого листа до работающей на контроллере программы. Пусть она ничего и не делает, но это уже успех.
Ардуино язык программирования: основные понятия
Язык программирования Ардуино основывается на языке C/C++, который широко распространен в мире программирования.
Целевой аудиторией Ардуино являются непрофессиональные пользователи в сфере роботостроения и простейших систем автоматики. Основной продукцией является набор плат, комбинируя которые, возможно создавать различные устройства, способные выполнять широкий ряд задач.
В качестве примера, из набора плат, выпускаемых данной фирмой, можно собрать автоматическую кормушку для своих домашних животных. И это лишь один из наиболее простых примеров. Сфера их возможного применения ограничивается лишь фантазией пользователей.
Кроме печатных плат, выпускаемых под торговой маркой Arduino, у них имеется собственный язык программирования Ардуино, который основывается на широко известном в кругу программистов языке C/C++. Давайте более подробно разберемся, что он из себя представляет.
Язык программирования
Язык программирования Ардуино довольно прост в освоении, так как основной целевой аудиторией его применения являются любители. Однако считается одним из самых лучших языков для программирования микроконтроллеров.
Arduino IDE является бесплатной программой, скачать которую может любой желающий. На нашем сайте вы можете скачать любую подходящую для вас версию среды. Также доступ к скачиванию IDE предоставлен на официальном сайте компании, а при желании, разработчиков можно отблагодарить, сделав денежный перевод.
Среда IDE поддерживается такими операционными системами, как Windows, MacOs и Linux. На официальном сайте компании указанно, что данный язык программирования написан на Wiring, но на самом деле его не существует и для написания используется C++ с небольшими изменениями.
Что необходимо для начала работы с Arduino IDE?
Для начала нам потребуются следующие вещи:
Имея этот набор, можно начинать экспериментировать с имеющимися у вас платами, записывая на них ваши первые скетчи.
Как настроить Ардуино на компьютере?
Делается это просто. Необходимо выполнить следующие действия:
Знакомство с интерфейсом Ардуино
Одним из основных элементов ардуино является главное меню программы, которое позволяет получить доступ ко всем доступным функциям нашей программы.
Ниже расположена панель с иконками, которые отображают наиболее используемые функции Arduino IDE:
Следующим по важности элементом является вкладка с файлами проекта. Если это простой скетч, то файл будет всего один. Однако сложные скетчи могут состоять из нескольких файлов. В таком случае на панели вкладок можно быстро переключить просмотр с одного файла на другой. Это очень удобно.
Самым большим из блоков является поле редактора наших скетчей. Тут мы можем просмотреть и, при необходимости, отредактировать нужный нам программный код. Отдельно реализовано поле для вывода системных сообщений. С его помощью можно убедиться, что сохранение вашего скетча или его загрузка были проведены успешно, и вы можете приступать к следующим действиям. Также в программе существует окно, отображающее наличие в ходе компиляции вашего скетча.
Основные функции языка программирования
Давайте наконец-то перейдем к самым основным функция языка программирования Ардуино.
Сразу скажем, что все функции вы можете найти в нашем удобном справочнике на нашем сайте.
Точка с запятой ;
Точка с запятой должна следовать за каждым выражением, написанным на языке программирования Arduino. Например:
В этом выражении мы присваиваем значение переменной и обратите внимание на точку с запятой в конце. Это говорит компилятору, что вы закончили кусок кода и переходите к следующему фрагменту. Точка с запятой в коде Ардуино отделяет одно полное выражение от другого.
Двойная обратная косая черта для однострочных комментариев //
Теперь, даже через 3 месяца когда я просматриваю эту программу я знаю о том куда подключался светодиод.
Компилятор будет игнорировать комментарии, поэтому вы можете писать все, что вам нравится. Если вам нужно много текста для комментария вы можете использовать многострочный комментарий, показанный ниже:
Комментарии похожи на сноски кода, но более распространены, чем те что ставят в книгах внизу страниц.
Фигурные скобки
Фигурные скобки используются для того, чтобы добавить инструкции, выполняемые функцией (мы обсудим функции дальше). Всегда есть открытая фигурная скобка и закрывающая фигурная скобка. Если вы забудете закрыть фигурную скобку, компилятор выведет код ошибки.
Функции ()
В Ардуино есть определенные функции, которые часто используются в среде Arduino IDE. Когда вы вводите их, имя функции будет оранжевым. Например, функция pinMode() является общей функцией, используемой для обозначения режима вывода Arduino.
Обратите внимание, что слово OUTPUT обычно синего цвета. В языке программирования Ардуино есть определенные ключевые слова, которые часто используются, а синий цвет помогает их идентифицировать. Arduino IDE автоматически превращает их в синий цвет.
Далее мы поговорим о двух функциях, используемых почти в любой программе Arduino.
void setup ( )
Возможно, вам интересно что означает void перед функцией setup(). Void означает, что функция не возвращает информацию.
Давайте рассмотрим пару вещей, которые вы должны знать о setup():
void loop( )
Как и в случае с setup(), функция loop() не возвращает никаких значений, поэтому перед неё предшествует слово void.
Если у вас есть датчик температуры, подключенный к вашему Arduino, например, тогда когда температура достигнет определенного порога вы можете включить вентилятор. Код цикла постоянно проверяет температуру, ожидающую запуска вентилятора. Поэтому, хотя код повторяется снова и снова, не каждая часть кода будет выполняться каждую итерацию цикла.
Существуют ли еще программы, работающие с Ардуино?
Помимо официальной Arduino IDE, существуют программы сторонних разработчиков, которые предлагают свои продукты для работы с микроконтроллерами на базе ардуино.
Аналогичный набор функций нам может предоставить программа, которая называется Processing. Она очень схожа с Arduino IDE, так как обе сделаны на одном движке. Processing имеет обширный набор функций, который мало уступает оригинальной программе. С помощью загружаемой библиотеки Serial пользователь может создать связь между передачей данных, которые передают друг другу плата и Processing.При этом мы можем заставить плату выполнять программы прямо с нашего ПК.
Существует еще одна интересная версия исходной программы. Называется она B4R, и главным ее отличием является использование в качестве основы не языка си, а другой язык программирования – Basic. Данный программный продукт является бесплатным. Для работы с ним существуют хорошие самоучители, в том числе и написанные создателями данного продукта.
Есть и платные варианты Arduino IDE. Одним из таких является программа PROGROMINO. Главным ее достоинством считается возможность автодополнения кода. При составлении программы вам больше не нужно будет искать информацию в справочниках. Программа сама предложит вам возможные варианты использования той или иной процедуры. В ее набор входит еще множество интересных функций, отсутствующих в оригинальной программе и способных облегчить вам работу с платами.
Конкуренты Ардуино
Данный рынок по производству микроконтроллеров для создания различных электронных схем и робототехники имеет много поклонников по всему земному шару. Данная ситуация способствует появлению на рынке не только конкурентов, которые предлагают схожие продукты. Кроме них выпускается значительное количество подделок разного качества. Одни очень тяжело отличить от оригиналов, ведь они имеют идентичное качество, другие обладают очень плохими характеристиками и могут вовсе не работать с оригинальными продуктами.
Существуют даже платы Arduino, которые поддерживают работу микропроцессоров с интерпретаторами JavaScript. Актуальны они, в первую очередь, для тех, кто желает использовать язык Java вместо Си. Ведь он более прост, и позволяет добиваться результатов с повышенной скоростью. Однако данные платы являются более дорогими по отношению к ардуино, что является существенным минусом.
Если вы ищите себе хобби и вам интересно такое направление, как электротехника, вы смело можете выбирать для этого Arduino. Плюсов такое хобби имеет массу. Вы будете развиваться в интеллектуальном плане, так как данное занятие потребует от вас знаний в разных областях.
Помимо развлечений, ваше хобби поможет вам в создании массы полезных изделий, которые вы сможете использовать для облегчения повседневной жизни. С каждым разом вы будете находить все новые и новые способы использования вашего увлечения.
Освоить данное занятие будет не так сложно, благодаря наличию большого количества учебников и самоучителей. В дальнейшем вы найдете множество единомышленников по всему миру, которые поделятся с вами своими знаниями и дадут вам стимул для совершения новых экспериментов!
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 вы можете перемещать виртуальную черепашку по виртуальной плоскости, здесь с помощью нехитрых операций вы можете заинтересовать ребенка реальной интерпретацией его программных действий.
По сравнению с 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 вы можете перемещать виртуальную черепашку по виртуальной плоскости, здесь с помощью нехитрых операций вы можете заинтересовать ребенка реальной интерпретацией его программных действий.
По сравнению с 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 — достаточно популярная платформа, чтобы такой банальный вопрос, как выбор удобного языка, не остановил очередного исследователя. Единственное, что требуется от владельца этой маленькой платы — задумать что-нибудь удивительно интересное, а удобный инструмент неизбежно найдётся.