OFFTOP:
Вариантите са няколко (затова пък безкрайни и все забавни):
1. Намираш проект, намираш нужните компоненти за него едно към едно, зареждаш sketch-а, компилираш, зареждаш в микроконтролера и ползваш.
Предимства: тръгва "от раз": 5 мин. за софтуерната част, нищо не пишеш, нищо не измисляш, не те боли главата вечер от множеството варианти.
Недостатъци: във всички намерени проекти все ще имат нещо, което не ти допада, ще искаш да промениш или да добавиш все нещичко.
2. Намираш подобен проект на твоя, който си замислил, а част от него поправяш (за наличните компоненти), изменяш готовите вече (с исканите функции) или допълваш (с нови функции).
Предимства: някой друг си е "блъскал" главата да измисли "скелета" на проблема, решил е 90% от нещата: "Бързо-лесно-вкусно", и след няколко дни изменения на софтуера и дописване на нови функции - и с мерудия

.
Недостатъци: Времезаемащо е: необходимо е четене и пробване на варианти.
3. Започваш проекта си от началото, със собствени алгоритми, начини на реакция, математ. обработки и всичко свое.
Предимства: Всичко сработва така, както си го поискал. Постепенно изчистваш кода и алгоритмите, докато ти хареса. Няма липсващи модули и устройства, няма безполезни менюта, няма безсмислен надписи. Бързо и лесно работиш с устройството, чиито функции си предвидил.
Недостатъци: Проектът никога няма да е завършен

. Все нещо "може и по друг начин", "може и по-бързо". Трябва четене, писане

триене и проби, болежки в главата, необходими са често моливи и много бели листа

.
***
Със споделените библотеки вариантите са между 2 и 3: някой (добър човек) е направил управление на непознатото налично устройство (и ги е споделил за всеобщо ползване), ти го управлявляваш с входно-изходните процедури и функции без да те интересува особено кое как се случва вътре му - то си се управлява и работи. Ти само му задаваш какво да прави. Така си сглобяваш идейното устройство с "черни кутии", управлявани от теб с ясно написани правила.
(Пример: за DDS: пиша му: set_freq(10 000 000); а какво става там вътре, какво се праща (по документацията) - то си знае и на тоя етап "не ни интересува". Важното е, че след изпълнение на реда от програмата, в изхода на DDS ще има 10 MHz.) Ти се занимаваш с обединението на черните кутии в едно, да вършат работата заедно.
Проблемът е ако няма такива библиотеки за това устройство/модулче или нещо не ти допадат наличните (много памет заемат, сложни са и др. подобни изисквания). Тогава се налага по метод 3 (и документацията за модула, устройството, чипа) да си напишеш собствени. А ако искаш: да ги споделиш за ползване от други потребители, за да прескочат те вариант 3 и за тях това да е вариант 2 или вариант 1.
Често собствената програмка взаимства от всички варианти по малко. Затова пък работата й после носи удовлетворение, а новопостроеното устройство става "любимо" (понеже знаеш пътя на изходния му код

).
Бе магии трябва да има
