https://habr.com/ru/post/55254/

Хочется прояснить ситуацию с так называемым «языком программирования Arduino», который «основан на Wiring». Подобные сочетания слов часто встречаются на страничках, посвященных Arduino. На официальном сайте так и пишут: "...is programmed using the Arduino programming language (based on Wiring)". По факту нет никакого особого языка программирования, и фактически программы пишутся на C/C++, а компилируются и собираются с помощью широко известного avr-gcc. Все особенности сводятся к тому, что имеется набор библиотек, включающий в себя некоторые функции (вроде pinMode) и объекты (вроде Serial), а при компиляции Вашей программы среда разработки создает временный .cpp файл, в который кроме Вашего кода включается еще несколько строчек, и полученный результат скармливается компилятору а затем линковщику с нужными параметрами.