Структура и синтаксис языка ArduinoIDE

Структура и синтаксис языка ArduinoIDE


setup()

Описание

Функция setup() вызывается при старте скетча. Обычно используется для инициализации переменных, установки режимов работы универсальных выводов (пинов), инициализации библиотек и т.п. Функция setup вызывается только один раз - после подачи питания или после сброса (нажатия на кнопку reset) платы Arduino.

Пример

1
2
3
4
5
6
7
8
9
10
11
12
int buttonPin = 3;
 
void setup()
{
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}
 
void loop()
{
  // ...
}

к содержанию ->>

loop()

Описание

После завершения вызова функции setup(), начинает вызываться функция loop().

При этом вызов loop() в точности соответствует ее названию - после завершения выполнения ее тела, она будет вызываться снова и снова - и так до бесконечности. Таким образом обычно обеспечивается "активная" часть скетча, анализирующая состояние платы и выполняющая соответствующие действия.

Пример

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int buttonPin = 3;
 
// setup инициализирует последовательный порт и кнопку
void setup()
{
  beginSerial(9600);
  pinMode(buttonPin, INPUT);
}
 
// в цикле проверяется состояние кнопки,
// в последовательный порт будет отправлено сообщение, если она нажата
void loop()
{
  if (digitalRead(buttonPin) == HIGH)
    serialWrite('H');
  else
    serialWrite('L');
 
  delay(1000);
}

к содержанию ->>

; точка с запятой

Описание

Используется для завершения строки.

Пример

1
2
int p;
p=123;

В случае, если вы забыли поставить точку с запятой в конце строки, то это скорее всего приведет к ошибке компиляции.

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду. Входной информацией для компилятора (исходный код) является описание алгоритма или программа на объектно-ориентированном языке (например ArduinoIDE), а на выходе компилятора — эквивалентное описание алгоритма на машинно-ориентированном языке (0101000111100100010011111100010101).

к содержанию ->>

{} фигурные скобки

Описание

Фигурные скобки (часто их называют просто "скобки") - важная конструкция языка программирования C. Иногда они вызывают затруднения у начинающих, поэтому их использование будет проиллюстрировано ниже.

Открывающая фигурная скобка "{" должна всегда иметь соответствующую закрывающую - "}". ArduinoIDE  имеет специальную возможность проверки парности скобок. Для этого выделите скобку или установите курсор сразу за ней - и тогда будет подсвечена её пара. 

Поскольку фигурные скобки используются во многих случаях, хорошем стилем считается печатать закрывающую сразу после открывающей (что автоматически выполняется в CodeBlocks например). Затем можно вернуться на символ назад, вставить новую строку между между ними, где уже и писать операторы. Таким образом, вы никогда не создадите ситуацию с "непарной" скобкой.

Скобки весьма важны с синтаксической точки зрения, и перемещение скобки на одну или две строки может привести к значительному воздействию на выполнение программы.

{} - используются для обхвата так сказать кода внутри этих скобок к чему либо (функции/классу/условию/циклу и т.д. и т.п). Фигурные скобки "открывают" и "закрывают" ту часть кода, которая относится к некоторой функции/классу/условию/циклу и т.д. и т.п.

Пример

1
2
3
4
5
6
void print(){
Serial.print("Hello WORLD!");
}
void setup(){
F();
}

к содержанию ->>

Комментарии

Описание

Комментарии - это фрагменты программы, в которых обычно записывают пояснения о том, что она делает. Они полностью игнорируются компилятором, и поэтому ничего не занимают в памяти ATmega после загрузки скетча.

Компилятор — Компьютерная программа, выполняющая компиляцию (ArduinoIDE например).

Основная функция комментариев - помочь разобраться (или вспомнить), как работает программа или объяснить другим, что она делает. Существует два разных стиля написания комментариев:

Пример

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int x;
int gwb=10;
void setup(){
x = 5;  // Это - однострочный комментарий. Всё, что после двух слэшей - комментарий,
                  // до конца строки
 
/* это - многострочный комментарий - можно использовать для "комментирования" фрагментов программы
 
if (gwb == 10){   // однострочный комментарий - это нормально внутри многострочного
x = 3;
}           /* но многострочный комментарий не допускает вложенности - это не будет компилироваться */
 
Serial.print(x) //будет отображено 5 а не 3
}
// не забудьте "зкарывающий" знак комментария - они должны быть сбалансированы
 

к содержанию ->>

#define

Описание

#define часто используется для определения значения имен констант до начала компиляции программы. Константы, которые определены таким образом, ничего не занимают в памяти микроконтроллера - компилятор подставит значения вместо имен во время компиляции.

Работа команды #define string1 string2 сравнима с операцией НАЙТИ и ЗАМЕНИТЬ в любом текстовом редакторе. До компиляции программы среда ArduinoIDE находит в тексте программы строку  string1 и заменяет ее на  string2

Однако, при использовании возможны побочные нежелательные эффекты - например, если имя определенной через #define константы вдруг входит хотя бы частично в имя другой переменной, то в этом случае произойдет ошибочная замена правильного части имени числом или текстом.

В общем случае, для объявления констант следует использовать ключевое слово const

Синтаксис

1
#define constantName value
1
#define ledPin 10;    // это ошибка
1
#define ledPin  = 3  // это тоже ошибка

к содержанию ->>

#include

Описание

#include используется для подключения к скетчу внешних библиотек. Это дает возможность программисту не только использовать обширный инструментарий стандартных библиотек C, но и подключать библиотеки Arduino.

Помните, что в #include, также как и в #define, не требуется указывать завершающую точку с запятой, во избежании генерации трудночитаемых ошибок компилятора.

Пример

Этот пример подключает библиотеку, которая позволяет управлять Сервомоторами.

1
2
3
4
5
6
#include <Servo.h> //"подключаем" библиотеку для управления сервомоторами
 
Servo myservo;  // создать объект Servo
                // 12 объектов Servo может быть создано на одной плате
 
int pos = 0;    // переменная pos приравнивается к нулю

к содержанию ->>





comments powered by Disqus