Arduino, Синтаксис языка (C++ & Wiring)
Arduino, Синтаксис языка (C++ & Wiring)
18 марта
В среде 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 это два разных идентификатора.
Примеры имен:
Ключевые слова.
Это зарезервированные языком программирования слова. Они не могут использоваться как имена идентификаторов.
Для примера это такие слова как:
if
for
new
float
bool
int
sizeof
struct и т.д.
Директивы препроцессора.
Опишу коротко, так как это тема для отдельной статьи.
Директива - это специальные команды препроцессора, которые он выполняет. Директивы начинаются со знака " # ".
Существуют такие директивы как:
Подключение файлов: #include, #include_next.
Условная компиляции: #if, #ifdef, #ifndef, #else, #elif and #endif.
Диагностика: #error, #warning, #line.
Дополнительная информация компилятору: #pragma
Макроопределения: #define
Дата: 2023-07-22   Автор: Администратор   Просмотров: 589
Контакты
Если у Вас есть вопросы, мы с удовольствием на них ответим.
Адрес:
Мурманская область, г.Полярный ул. Красный Горн, д.16, 3-й этаж, 34 каб.
Почта:
komarov.1988@inbox.ru
Телефон:
+7 9646829261
