Найти в Дзене
VktrSansara

Arduino, Синтаксис языка (C++ & Wiring)

В среде Arduino IDE применяется язык С++, поверх которого установлен фреймворк Wiring, добавляющий свои библиотеки, функции и объекты такие как - (Для простого примера) Serial, pinMode, analogWrite, tone и т.п. Фреймворк вводит целый ряд изменений. В среде Ардуино исходные файлы принято называть Скетчами, и они имеют расширение файла ".ino". Первое, что бросится в глаза - это совсем другая структура кода, вместо привычного в С++: #include <iostream> using namespace std; int main() { return 0; } Нас встретят две функции: void setup() { } - Функция, которая выполняется один раз, при включении микроконтроллера (скр.: мк). В ней производятся предварительные настройки или другим словом - инициализация void loop() { } - В этой функции, точнее ее можно описать как бесконечный цикл (см. ниже), выполняется основной код вашей программы. На самом деле функция main() никуда не исчезает. Фреймворк скрывает от нас лишнее и предлагает работать в более удобном варианте (по мнению разработчиков).

В среде Arduino IDE применяется язык С++, поверх которого установлен фреймворк Wiring, добавляющий свои библиотеки, функции и объекты такие как - (Для простого примера) Serial, pinMode, analogWrite, tone и т.п. Фреймворк вводит целый ряд изменений.

В среде Ардуино исходные файлы принято называть Скетчами, и они имеют расширение файла ".ino".

Первое, что бросится в глаза - это совсем другая структура кода, вместо привычного в С++:

#include <iostream>

using namespace std;

int main() {

return 0;

}

Нас встретят две функции:

void setup() { } - Функция, которая выполняется один раз, при включении микроконтроллера (скр.: мк). В ней производятся предварительные настройки или другим словом - инициализация

void loop() { } - В этой функции, точнее ее можно описать как бесконечный цикл (см. ниже), выполняется основной код вашей программы.

На самом деле функция main() никуда не исчезает. Фреймворк скрывает от нас лишнее и предлагает работать в более удобном варианте (по мнению разработчиков).

На самом деле без фреймворка код программы будет выглядеть так:

#include "WProgram.h" // Определения всего функционала Arduino.

void setup(); // Объявление функции setup и loop

void loop();

void setup() {

// Инициализация вашей программы

}

void loop() {

// Основной цикл вашей программы

}

int main(void) { // Основной цикл программы

init(); // Скорее всего инициализация фреймворка

setup(); // Инициализация вашей программы

for ( ; ; ) // Бесконечный цикл в котором "крутится" основной код вашей программы

loop();

return 0; // Никогда не выполнится

}

- И тут уже все встает на свои места.

Давайте "коротко" рассмотрим синтаксис.

Комментарии

Для начала начнем с простого, с комментариев. Они бывают двух видов - однострочные и многострочные.

Первые объявляются двойным слэш:

// Тут какой то текст

Во втором варианте, текст пишется между /* и */ :

/*

Тут первая строка

Тут вторая

Еще много строк

......

И последняя строка

*/

Также многострочный комментарий можно встроить в любое место в коде. Например:

Serial.begin( /* Скорость порта в бод */ 9600 );

analogWrite( /* Номер вывода */ pin, /* Передаем значение */ value);

Это не вызовет ошибки в Arduino IDE. Но так обычно не делают, однако знать о такой возможности необходимо.

Точка с запятой и Блок кода.

; (Точка с запятой) - (токен) указывает на конец инструкции или же терминатор конца строки. В каждой литературе по разному. Может быть необязателен в некоторых случаях, покажу на примере if :

if ( a == b ) Serial.print("A = B");

if ( a == b ) {

Serial.print("A = B");

}

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

Я не зря привел в пример if, где мы можем видеть, что (инструкция) Serial.print("A = B"); - заключена в фигурные скобки. Это называется Блок Кода.

Если совсем точно, то блок кода - это набор логически связанных операторов, заключенных в фигурные скобки:

{

....Блок кода....

}

Но давайте вернемся к точке с запятой. Дело в том, что компилятор не распознает конец строки как терминатор. Поэтому неважно - где в строке вы укажете точку с запятой. Проще на примере:

a = 5;

b = 10;

sum(a, b);

Для компилятора тоже самое, что:

a = 5; b = 10; sum(a, b);

Идентификатор.

Идентификатор - это имена переменных, функций, классов или любого другого элемента. Он должен начинается с букв от A до Z или от a до z, символа нижнего подчеркивания, за которым следует последовательность букв, символов подчеркивания и цифр от 0 до 9.

Нельзя использовать знаки препинания, такие как @, $ и % и пробел:

int var@num; Не правильно

int var num; Не правильно

C++ язык программирования, с учетом регистра. То есть, Var и var это два разных идентификатора.

Примеры имен:

-2

Ключевые слова.

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

Для примера это такие слова как:

if

for

new

float

bool

int

sizeof

struct и т.д.

Директивы препроцессора.

Опишу коротко, так как это тема для отдельной статьи.

Директива - это специальные команды препроцессора, которые он выполняет. Директивы начинаются со знака " # ".

Существуют такие директивы как:

Подключение файлов: #include, #include_next.

Условная компиляции: #if, #ifdef, #ifndef, #else, #elif and #endif.

Диагностика: #error, #warning, #line.

Дополнительная информация компилятору: #pragma

Макроопределения: #define

Подробно про директивы я буду писать в одной из следующих статей.

#ардуино #arduino #arduinoide #программирование