Я не спец по ардуине, у меня её просто нет, но для меня очевидно
что всё вышесказанное лишь результат поверхностных наблюдений за
самым тривиальным кодом наблюдающимся на www, кодом для самой
простой и слабой ардуинки на 8-битном AVR на единицах мегагерц, для
которой что-то серьезное типа DMA и не существет даже, либо
оверкилл. Вся требуемая асинхронность так же упрятывается в
библиотеки, причем понимая архитектуру (бутлоадер + редактор + твой
крестовый/сишный код + библиотеки которые ты сам пишешь) всё это давно уже написано и существует - и либы использующие DMA, и либы использующие что угодно. Соответствено, всё упирается в "уметь готовить" aka руки прямые или из попы, aka прошаренный чувачок или лентяй.... Но не в ардуину как таковую, которая по сути отладочная плата + всё что я выше описал. Во всяком случае объективных причин писать так как хочется на Arduino не усматриваю.
Так вижу.