CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Что за язык программирования используется для Arduino?

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


/*
 * 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" наверх, может еще какие-то мелочи, но идея остается той же самой.

Ссылки:
по материалам Что за особый язык программирования используется для Arduino?

По теме:
Ардуино что это и зачем?
Почему Arduino побеждает и почему он здесь, чтобы остаться?
Arduino, термины, начало работы
Разновидности плат Arduino, а также про клоны, оригиналы и совместимость
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)
Подготовка к работе с Arduino/CraftDuino
Программирование Arduino — статьи.
Книги про Arduino
книга на русском языке: Блокнот программиста Arduino (PDF 1.3 Mb)
Шпаргалка по Arduino
Возможные ошибки при работе с Arduino

Arduino/CraftDuino и WinAVR — программируем на чистом С
Переходим от Arduino к программированию ATtiny13 на C
  • +1
  • 17 июня 2009, 14:13
  • noonv

Комментарии (4)

RSS свернуть / развернуть
+
0
Извените но чтотоне как не могу найти у себя на компьютере вот этот путь
Local Settings\Temp\build40910.tmp\ появится куча файлов

Мне нужен именно файл расширения .HEX для Протеуса, а найти не могу. Подробней можно рассказать пожалуйста. Спасибо заранее. :)
avatar

conysSM

  • 1 февраля 2011, 13:39
+
0
Спасибо :) нашёл!
avatar

conysSM

  • 2 февраля 2011, 00:57
+
0
Где нашел? Мне тож hex нужны для протеуса))
avatar

DeVOLT

  • 6 апреля 2011, 17:38
+
0
За три года никто не нашел ответа? C:\Users\User\AppData\Local\Temp\build1277780525188214178.tmp
avatar

assvard

  • 1 августа 2014, 16:06

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.