Site logo

Developer Blog

Pavel Koltyshev

Конструкции языка программирования Arduino

Содержание

Программы для Arduino пишутся на языке Arduino C (C++ с фреймворком Wiring).

Директивы

#include

// Подключает указанный файл
#include <stdio.h>
#include "stdio.h"

#define, #undef

// Определяет идентификатор
#define LED_PIN 13
digitalWrite(LED_PIN, HIGH);

// Сбрасывает определение идентификатора
#undef LED_PIN

#ifdef, #ifndef

// Выполняет действие если идентификатор определен
#ifdef LED_PIN
digitalWrite(LED_PIN, HIGH);
#endif

// Выполняет действие если идентификатор не определен
#ifndef PRODUCTION
Serial.println(val);
#endif

#if, #elif, #else и #endif

// Конструкция ветвления с проверкой определения (не определения) идентификатора
#if defined(MOTOR_PIN)
// ...
#elif !defined(LED_PIN)
// ...
#else
// ...
#endif

Структура управления

if…else

if (val === 1) {
    // ...
} else if (val === 2) {
    // ...
} else {
    // ...
}

Тернарный оператор ветвления

<условие> ? <если истина> : <если ложь>

digitalWrite(LED_BUILTIN, isOn ? HIGH : LOW);

switch…case

switch (value) {
  case label1:
    // ...
    break;
  case label2:
    // ...
    break;
  default:
    // ...
    break;
}

break, continue

for (int i = 0; i < 10; i++) {
    if (i > 5) {
        // Прервать все итерации
        break;
    } else {
        // Перейти к следующей итерации
        continue;
    }
}

for

for (int i = 0; i < 10; i++) {
    // ...
}

while

while (condition) {
  // ...
}

do…while

do {
  // ...
} while (condition);

Комментарии в коде

/*
 * Многострочный
 * комментарий
 */

 // Однострочный комментарий

Функции

Функции группируют части программ в блоки и позволяют их повторно использовать.

void flashlight(int pin) {
    digitalWrite(pin, HIGH);
}

Массивы

Массивы представляют список типизированных данных. Доступ к элементам массива осуществляется по индексу (нумерация индексов начинается с 0).

// Массив строк
char* names[] = {
    "Victor",
    "Alex",
    "Piter"
};

names[0]; // "Victor"

// Массив чисел
int numbers[] =  {1, 2, 3, 4};
numbers[3]; // 4

Основные блоки программы на Arduino

void setup() {
    // Настройка / инициализация
}

void loop() {
    // Бесконечный цикл программы
}

Константы

#define LCD_PIN 10
const int BATTERY_COUNT = 3;

Типы данных

ТипРазмер (в байтах)Диапазон значенийОписание
boolean1true или false (0 или 1)Представляет логические значения
char1-128…+128Используется для представления кодов символов ASCII (отрицательные значения не используются)
byte10…255Представляет целое положительное значение
int2-32 768…+32 767Представляет целое 16-битное значение со знаком
unsigned int20…+65 535Представляет целое положительное 16-битное значение
long4-2 147 483 648…+2 147 483 647Представляет целое 32-битное значение со знаком
unsigned long40…4 294 967 295Представляет целое положительное 32-битное значение
float / double4-3,4028235E+38…+3,4028235E+38Представляет вещественное 32-битное значение со знаком