Сьогодні буде простий пост. Є багато способів скомпілювати і завантажити програму для Arduino. Хочу розповісти про свій улюблений метод: з використанням чудового проекту Arduino-Makefile, спеціального Makefile
для роботи з Arduino.
Застереження: я знаю, що також є новий проект Arduino CLI. Тут йдеться не про нього.
Arduino IDE
Писати код в Arduino IDE часів версій 1.x мені чомусь ніколи не подобалося. З виходом Arduino IDE 2 інтерфейс став помітно краще, але у будь-якому разі я не хочу обмежувати себе.
Я редагую код в різних текстових редакторах та IDE, які відповідають моїм смакам та моїм поточним потребам, від Vim до Visual Studio Code. Зокрема, цей пост я пишу в Geany, легкому і потужному редакторі для повсякденних задач; всі інші супутні дії (збірку сайту з Jekyll, коміти в Git тощо) я роблю в консолі.
Так само в консолі я компілюю свої програми для Arduino.
Інсталяція
Для Debian та Ubuntu все потрібне є в репозиторіях дистрибутива. Нам треба буде встановити застарілий Arduino IDE 1.x, навіть якщо ми не будемо користуватися його інтерфейсом.
sudo apt install arduino arduino-mk
Для інших систем (зокрема, якщо встановити Arduino IDE вручну) все може бути складніше.
Blink
Не знаєш що робити — блимай світлодіодом :)
Отже, нам треба зробити каталог для нашого нового проекту і покласти в нього Blink.ino
з повністю передбачуваним вмістом:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
В тому ж каталозі створюємо файл Makefile
ось такого вигляду:
BOARD_TAG = uno
include /usr/share/arduino/Arduino.mk
Запускаємо команду make
і дивимось, що відбувається. Може щось піти не так, на те є мільйон різних причин. На моїй системі компіляція працює. Також я перевірив, що в абстрактній Ubuntu в вакуумі теж працює:
docker run -it --rm -v $(pwd):/test ubuntu
apt update
apt install arduino arduino-mk
cd /test
make
Якщо ніде нічого не зламалося, то має з’явитися каталог build-uno
з купою файлів. Це результат компіляції. (Зазвичай я додаю build*
в .gitignore
проекту).
Останній крок: команда make upload
для прошивки вашого Arduino Uno. Якщо не вказувати порт, то воно визначить його автоматично.
Також треба знати про команду make help
.
Що як у мене не Arduino Uno, а Arduino Nano?
Тоді в Makefile
замість BOARD_TAG = uno
треба написати щось таке:
BOARD_TAG = nano
BOARD_SUB = atmega328
Збірка буде відбуватися в каталог build-nano-atmega328
. (Цілком нормально, що для різних плат використовуються різні збірки).
Також у мене є декілька китайських клонів Arduino Nano з дешевшим мікроконтролером, який потребує такої конфігурації:
BOARD_TAG = nano
BOARD_SUB = atmega168
Запустіть make show_boards
та make show_submenu
, щоб подивитися інші варіанти.
Файли з розширенням .cpp
замість .ino
Може з якихось причин виникнути бажання перейменувати Blink.ino
в щось типу Blink.cpp
, бо врешті-решт це ж і є C++. У такому разі знадобиться додати один рядок на початку цього файлу:
#include <Arduino.h>
Додаткові бібліотеки
Якщо в Arduino IDE встановити через його внутрішній менеджер бібліотек якісь додаткові зовнішні бібліотеки, то для їх використання треба буде їх явно вказати в Makefile
:
ARDUINO_LIBS = Servo
Далі бібліотека використовується звичним чином:
#include <Servo.h>
Мораль і висновки
Власне, це і все. Цей інструмент економить мені нерви та час. Може ще комусь підійде :)