На официальном сайте пишут: «…is programmed using the Arduino programming language (based on Wiring)«.
Фактически — нет никакого особого языка программирования и программы пишутся на C/C++, а компилируются и собираются с помощью широко известного avr-gcc (в версии для Windows — WinAVR).
Все особенности сводятся к тому, что имеется набор библиотек, включающий в себя некоторые функции (вроде pinMode) и объекты (вроде Serial), а при компиляции Вашей программы среда разработки создает временный .cpp файл, в который кроме Вашего кода включается еще несколько строчек, и полученный результат скармливается компилятору а затем линковщику с нужными параметрами.
Для примера, рассмотрим стандартный тестовый скетч (Sketch)
Sketch — это название программ для Arduino. Это единичный проект, который загружается и выполняется платой.
Например, скетч Blink — мигает светодиодом, подключённым к 13 выводу(File -> SketchBook -> Examples -> Digital -> Blink):
сам файл находится здесь: arduino-0016\examples\Digital\Blink\Blink.pde
/* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/Tutorial/Blink */ int ledPin = 13; // LED connected to digital pin 13 void setup() // run once, when the sketch starts { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() // run over and over again { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second }
Если теперь скомпилировать полученную программу в Arduino, то во временной директории
вида
Local Settings\Temp\build40910.tmp\ появится куча файлов.
В основном это объектные, содержащие скомпилированные стандартные функции, а также готовая скомпилированная программа в разных форматах (ELF, ROM, HEX). Самым интересным является .cpp файл — это то, во что превратился наш код, с нашими подробными комментариями — разумеется они добавлены вручную 🙂
— Temporary_4477_534.cpp —
/* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/Tutorial/Blink */ #include "WProgram.h" // тут определения всех Arduino ф-ий, констант и т.д. void setup(); // объявляют ф-ии setup() и loop(), в которых наша void loop(); // программа для Arduino и пишется int ledPin = 13; // светодиод подключается к выводу 13 // --- а вот с этого места пошел наш исходник --- void setup() // вызывается один раз при запуске скетча { pinMode(ledPin, OUTPUT); // устанавливаем вывод, как ВЫХОД } void loop() // вызывается в цикле { digitalWrite(ledPin, HIGH); // устанавливает высокий уровень напряжения (светодиод горит) delay(1000); // задержка на 1 секунду digitalWrite(ledPin, LOW); // устанавливает низкий уровень напряжения (светодиод гаснет) delay(1000); // задержка на 1 секунду } // здесь наш код кончился, опять пошли "довески" int main(void) // здесь как и принято в c/c++ ф-ия main() { init(); // в ней вызывается своя инициализация setup(); // затем вызывается наш setup() for (;;) // и в бесконечном цикле вызывается наш loop() loop(); return 0; // а сюда вообще никогда не попадаем }
На самом деле, среда Arduino делает еще какие-то мелкие преобразования исходного кода, например декорирует не-латинские символы, выносит все «#include» наверх, может еще какие-то мелочи, но идея остается той же самой.
Ссылки
http://wiring.org.co
по материалам Что за особый язык программирования используется для Arduino?
По теме
Ардуино что это и зачем?
Почему Arduino побеждает и почему он здесь, чтобы остаться?
Arduino, термины, начало работы
Разновидности плат Arduino, а также про клоны, оригиналы и совместимость
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)
Подготовка к работе с Arduino/CraftDuino
Программирование Arduino — статьи.
Книги про Arduino
книга на русском языке: Блокнот программиста Arduino (PDF 1.3 Mb)
Шпаргалка по Arduino
Возможные ошибки при работе с Arduino
Arduino/CraftDuino и WinAVR — программируем на чистом С
Переходим от Arduino к программированию ATtiny13 на C
0 комментариев на «“Что за язык программирования используется для Arduino?”»
Извените но чтотоне как не могу найти у себя на компьютере вот этот путь
Мне нужен именно файл расширения .HEX для Протеуса, а найти не могу. Подробней можно рассказать пожалуйста. Спасибо заранее. 🙂
Спасибо 🙂 нашёл!
Где нашел? Мне тож hex нужны для протеуса))
За три года никто не нашел ответа? C:\Users\User\AppData\Local\Temp\build1277780525188214178.tmp