Добрый всем день. Хотел поделиться своим опытом по знакомству с платформой Arduino.
Все началось с того, что на этот Новый Год жена подарила мне набор Матрешка Z от Амперки, зная, что я давно собираюсь уделить время немало забытой с университетских времен электронике и познакомиться с миром Arduino.
Сейчас я не хотел бы описывать преимущества и недостатки данного набора, скажу лишь, что это неплохой вариант для начинающих, хоть, возможно, и не лучший, но критичных проблем с ним у меня не было.
И вот первый опыт, схема собрана на макетке, все готово к тому, что бы заставить весело мигать светодиод и настает время лишь написать код и залить его на плату. Код конечно можно было не писать руками, а лишь взять с сайта Амперки, но я решил что мы не ищем легких путей и код надо писать самомоу. Казалось бы ничего сложного в этом нет, скачать Arduino IDE, написать скетч и залить на устройство, но с самого начала меня очень напрягла проблема - в Arduino IDE нет автодополнения и перехода к исходному коду используемого класса. Возможно, для тех, кто впервые знакомится с программированием именно начиная с Arduino, это не составляет проблем, но я по долгу работы сталкиваюсь с кодом много и каждый день, а потому, привык к тому, что автодополнение как минимум в IDE быть должно... и тут начался треш.
Первым же вариантом было пойти в гугл и начать искать варианты решения проблемы и первым решением, которое я нашел - устновить Visual Studio Code (легковесный редактор от майкрософта с гибкой настройкой плагинов) и поставить в него плагин для разработки Arduino. Это сразу же решило проблему перехода к исходному коду по Ctrl+click на имени класса и проболему автодополнения кода так же, но довольно быстро выяснилось, что плагин достаточно сырой, а его реализация местами крайне непрактична и требует настройки библиотек и путей вручную, причем некоторые пути видеть отказывается.
Вторым моим решением было обратиться к проверенным разработчикам IDE - JetBrains, продуктом которых, под названием Intellij Idea, я пользуюсь чуть чаще, чем регулярно. Но так как Idea это не совсем про С/С++, то был скачан CLion заточенный именно под это и как и ожидалось для него оказался плагин для Arduino... сломанный плагин, потому при создании проекта IDE вылетала сразу же и безоговорочно. Но дальнейший дайвинг в гугле прозволил найти 2ю его версию, которая вроде как оказалась рабочей до тех пор, пока я не попытался залить скетч на плату, как выяснилось, в момет заливки он использует так же часть кода первого плагина, который после определенной версии CLion приводит к его крашу, как и в первом случае.
И вот спустя все эти мучения после еще более глубокого исследования вариантов разработки было найдено видео на испанском о_О где рассказывали об использовнии некого плагина PlatformIO для текстового редактора Atom, который делает все что я искал и делал это быстро и изящно. После курения мануалов на сайте разработчиков данного плагина стало ясно, что поддерживает он не только Atom, но и ранее упомянутую Visual Studio Code. Было принято решение установить оба и протестировать основательно.
В результате я пришел к следующему выводу, в обоих IDE плагин показал себя замеательно и работает без каких либо нареканий, но была замечена одна особенность при использовании Atom, в момент заливки скетча, служебная информация о том сколько памяти в контроллере занимает скетч отображается в отдельном окне терминала, который существует только на мгновения загрузки скетча в память контроллера, а затем бесследно закрывается предоставляя вместо себя новое окно консоли.
Итоги: В силу вышеуказанных причин остановился на использовании связки Visual Studio Code + PlatformIO и в данный момент уже прошел все 20 опытов из набора Матрешка, сделал все дополнительные задания и провел множество экспериментов выходящих за рамки набора. Я совершенно не претендую на уникальность изложенной информации или абсолютную безальтернативность выбранного мной подхода, но я буду очень рад, если он поможет хоть кому-то, кто захочет окунуться в мир микроконтроллеров, сделать первые шаги в нем приятнее и проще, а так же избежать безсонных ночей в поисках адекватного средства разработки. Буду очень и очень признателен за любые полезные советы с вашей стороны, спасибо всем, кто дочитал!