На официальном сайте пишут: «…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