Arduino и Visual Studio Code

После парочки проектов Arduino в стандартной Arduino IDE начинаешь подумывать о том, как расстаться с IDE для новичков и найти другой способ настройки файлов с помощью функций setup() и loop() в файле .ino.

Скорее всего, большинство ваших первых проектов придерживались следующий структуры в файле .ino:

setup() {

}

loop() {

}

Чтобы распрощаться с этой тенденцией, я начал использовать редактор, пригодный практически для любых целей,  —  Visual Studio Code.

VS Code предлагает разные расширения для разработки Arduino. Я предпочел PlatformIO, поскольку оно превращает VS Code в полноценную IDE для различных встраиваемых систем, включая и Arduino!

Установив VS Code, открываем контекстное меню комбинацией клавиш control + shift + p. После этого вводим install и находим опцию Extensions: Install Extensions (Расширения: Установить расширения).

Опции для установки расширений

Выбираем Extensions: Install Extension и находим PlatformIO, набирая в поисковой строке слово “platform.” На левой боковой панели появляется опция PlatformIO IDE. Остается только нажать Install.

Установка расширения PlatformIO

После установки на левой боковой панели VS Code вы увидите иконку с инопланетянином, указывающую на расширение PlatformIO IDE. Выбираем ее и открываем PlatformIO IDE GUI.

PlatformIO GUI

После открытия GUI для PlatformIO выбираем New Project и начинаем работу над первым проектом Arduino за рамками Arduino IDE для начинающих!

Открытое диалоговое окно проекта PlatformIO

Например, я воспользовался версией “Hello, World” для встраиваемых систем, которая мигает светодиодом (англ. LED). В связи с этим проект получил название blinky (от англ. blink  —  мигать). В поле выбора Boards обязательно выбираем нашу рабочую плату, чтобы гарантировать успешное завершение процесса сборки и прошивки.

После именования проекта и выбора нужной платы Arduino открывается диалоговое окно с каталогом проекта и основным файлом исходного кода. Файл main.ino больше не существует! Структура каталога становится более упорядоченной, и основной файл исходного кода находится в main.cpp.

Основной файл исходного кода в VS Code

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

#включение <Arduino.h>

int main(int argc, char **argv) {
    init();
    for(;;) {
    }
}

Заменив функции setup() и loop() на main(), вы заметите наличие функции init(). С ее помощью происходит инициализация платы Arduino для работы с последующим кодом. В отсутствии функции init() код не будет выполняться должным образом. 

Как видно, благодаря инструкции #include в начале файла у нас будут все функции Arduino для входа, выхода, пинов и т.д. 

С помощью функции pinMode() устанавливаем режим работы пина на выход: 

const int ledPin = 12;
pinMode(ledPin, OUTPUT);

Здесь применяется пин 12 на Arduino для управления светодиодом на макетной плате. 

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

digitalWrite(ledPin, HIGH);
delay(1000);

digitalWrite(ledPin, LOW);
delay(1000);

Чтобы добиться непрерывного мигания, помещаем код в цикл for(;;).

Итоговый файл main.cpp выглядит так: 

Итоговый файл main.cpp

По мере готовности кода переходим к сборке и прошивке проекта. Для сборки комбинацией клавиш control + shift + p открываем контекстное меню, вводим build и видим запись PlatformIO: Build. Эта опция позволяет PlatformIO cкомпилировать и собрать проект Arduino для конкретной платы, указанной ранее при создании проекта. 

При выборе данной опции в нижней половине окна VS Code появляется небольшой терминал. После успешной компиляции и сборки код готов к прошивке! По итогам удачной сборки в терминале выводится следующее сообщение: 

Успешная сборка Arduino PlatformIO

На следующем этапе приступаем к загрузке (прошивке) сборки на плату Arduino. Снова задействуем control + shift + p и вводим upload. В списке опций выбираем PlatformIO: Upload и загружаем собранный проект на плату Arduino. 

Диалоговое окно PlatformIO: Upload

После загрузки проекта на плату Arduino заставит светодиод мигать с односекундной паузой между операциями! 

В терминале VS Code результативная загрузка выглядит так: 

Загрузка на Arduino

Поздравляю с написанием первого проекта Arduino за рамками Arduino IDE для начинающих! Теперь вы работаете со встроенными системами, которые отделены от Arduino IDE. PlatformIO также используется с платами STM32 и более дешевыми платами-клонами, доступными в интернете.

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Jacob Latonis: Arduino and Visual Studio Code: Getting Started

Предыдущая статьяКак настроить Next.js на TypeScript, чтобы получить оценку в 100% от Google Lighthouse и Vercel Analytics
Следующая статьяДвижки JavaScript. Часть 2: генерация кода и базовые оптимизации