
Если вы работаете с Arduino, то рано или поздно вы неизменно разочаруетесь в минималистичном функционале Arduino IDE как в текстовом редакторе кода. Ни тебе человеческой подсветки, ни автозаполнения, ни вкусных плюшек и плагинов… И закономерно начнете рыть информацию о связках Arduino с Intellij Idea, Sublime Text, ну или на худой конец с Notepad++, поскольку даже в последнем редактировать код значительно комфортнее.
Вот как раз о последней связки Arduino с Notepad++ и пойдет сказ о костылях, для тех, кто еще не раскошелился на лицензию Intellij Idea или Sublime Text.
И в общем, работая со скетчем в Notepad++ вы можете свести к минимуму обращение к окну Arduino IDE (первый и общеизвестный костыль) или даже полностью исключить запуск Arduino IDE и компилировать и даже заливать скетч в плату непосредственно из Notepad++ (второй костыль).
Костыль первый
Это даже не костыль, а такая build-in тросточка, штатно имеющаяся в Arduino IDE. Но пользуются ей, судя по форумам, практически никто. Хотя, если разобраться, жить с этим какое то время можно…
- Итак, последовательность действий следующая:
- запускаете Arduino IDE;
- открываете ваш скетч;
- заходите в настройки IDE и включаете галочку «Использовать внешний редактор»;
Теперь окно IDE изменило цвет и пропала возможность редактировать скетч в самом IDE.
- открываете Notepad++ (или любой другой редактор кода или другую любимую IDE);
- открываете свой скетч, связные модули, библиотеки и т.д.;
- редактируете код;
- сохраняете;
- переходите в Arduino IDE;
- нажимаете Verify или Upload (компилируете или выгружаете скетч);
А что происходит? При включенной галке «Использовать внешний редактор» Arduino IDE при каждой операции Verify или Upload будет автоматически переоткрывать текущий скетч, сохраненный вами в другом редакторе. Ну, в общем то не манна небесная, но жить с этим уже можно, и не страдать от ущербности редактора Arduino IDE.
Что плохо? Что нужно переключаться между окнами… это быстро утомляет. Хочется, чтобы как в детстве, чтобы как у людей! — отредактировал код, нажал Alt+F9 для Compile, потом Ctrl+F9 для Run. Есть и такое решение.
Костыль второй
И это уже полноценные ходунки, с резиновыми колпачками и поролоновыми ручками. Но, дизайн пока совковый, без канделябров…
Начиная с версии 1.5 (это та, которая с поддержкой Arduino Due) Arduino IDE стала поддерживать работу из коммандной строки. Полный перечень команд можно посмотреть здесь. Нас будут интересовать две команды, "--verify" и "--upload" для компиляции и выгрузки скетча соответственно.
Чтобы ими воспользоваться нужно установить в Notepad++ плагин NppExec. Сделать это можно из меню плагинов. Более подробно об установке и использовании плагина написано в соответствующей статье на Хабре. Нас будет особо интересовать переменная окружения файлового уровня $(FULL_CURRENT_PATH), которая подставляет в командную строку полный пусть файла, открытого в текущей закладке Notepad++.
Теперь нам нужно в NppExec создать два макроса для команд verify и upload. Но перед этим необходимо в системную переменную PATH добавить путь, где находится файл arduino.exe (путь к папке установки Arduino IDE). Это для того, чтобы наши макросы начинались с короткого «arduino --», а не с указания полного пути к исполняемому файлу. Как изменить PATH для разных ОС описано здесь.
Вот теперь создаем два макроса:
- arduino --verify "$(FULL_CURRENT_PATH)"
- arduino --upload "$(FULL_CURRENT_PATH)"
Обратите внимание, переменная "$(FULL_CURRENT_PATH)" должна указываться именно в кавычках, это на тот случай, если путь к файлу скетча содержит пробелы.
И если вы не указываете в макросах никаких параметров по плате, чипу, порту и т.д., то все эти параметры для выгрузки в плату (макрос --upload) будут браться те, которые были настроены в Arduino IDE при последнем запуске.
В меню настроек NppExec есть опция, размещающая создаваемые вами макросы на закладке Макросы на панели меню Notepad++.

К сожалению, разработчик NppExec не позаботился об опции создания на панели Notepad++ новых кнопок и привязке к ним новых макросов, поэтому наши макросы придется запускать из меню Макросы:

Новые макросы будут располагаться в самом низу меню, под разделителем.
Теперь можно открыть консоль («Show Console Dialog»)

и проверить макросы.
Все сообщения Arduino IDE теперь при компиляции и выгрузке будут отображаться в консоли самого Notepad++.
Но тут есть подводный камень. Если вы сидите на русских Windows, то вместо русских системных сообщений компилятора С и русских букв в пути к файлу (например, если вы держите свои скетчи в папке «Google Диск»), вы будете видеть в консоли NppExec абракадабру. Пока это системно не лечится (к разработчику NppExec я пока не обращался), но вы можете попробовать заменить текущую библиотеку NppExec на одну из двух, предлагаемых в последнем релизе, ANSI или Unicode. Мне пока не помогло…
Как видите у данного костыля есть пара неприятных недостатков
Во-первых, arduino.exe запускается при каждом запуске макроса и закрывается по его выполнению. Таким образом вы теряете 3-4 секунды на каждую компиляцию кода. В этом плане Arduino IDE работает немного быстрее. Но, если вы пишите код аккуратно и компилируете редко, то это вас напрячь не должно.
Во-вторых, как я писал выше, разработчик NppExec не позаботился об опции создания на панели Notepad++ новых кнопок с привязкой к ним новых макросов, как сделано, например в плагине Python Script:

(картинка кликабельна)
Поэтому макросы придется запускать в два клика мышью, например из меню Макросы.
В-третьих, у вас нет монитора COM-порта в Notepad++. Но тут уж вам никто не поможет, смиритесь… монитор только в Arduino IDE. Но мне он, например, для отладки новой библиотеки для WiFly был нужен не всегда, только при контроле работы уже включенной и пролитой платы с модулем. И почти всю работу я проделал (да и сейчас пилю) в Notepad++.
Я, в общем то, с этим смирился. И даже осталась какая-то интрига — допилить кнопки и монитор самому.
Ну а теперь осталось только присвоить новым макросам горячие клавиши Alt+F9 и Ctrl+F9

и…

Добро пожаловать домой, старички! ;)
И никакого Arduino IDE.
P.S. Не все картинки взяты с моего Notepadа++, сори. Я сейчас не за своим компом, но очень просили поделиться костылями. Потом заменю картинки на реальные.
Тему а-ля turbo pascal можно посмотреть вот здесь.