8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Спавочник по программированию Arduino

Данные:

Однобайтовые типы данных:

bool
boolean

Целочисленные значения

принимают любые, возвращают 0 или 1

если принят не 0, то вернётся 1

char
int8_t

Целочисленные значения или символы

от -128 до 127

byte
unsigned char
uint8_t

Беззнаковые целочисленные значения

от 0 до 255

Двухбайтовые типы данных:

int
short
int16_t

Целочисленные значения

от -32’768 до 32’767

В Arduino Due, тип int идентичен типу long

word
unsigned int
unsigned short
uint16_t

Беззнаковые целочисленные значения

от 0 до 65’535

В Arduino Due, тип unsigned int идентичен типу unsigned long

Четырёхбайтовые типы данных:

long
int32_t

Целочисленные значения

от -2’147’483’648 до 2’147’483’647

unsigned long
uint32_t

Беззнаковые целочисленные значения

от 0 до 4’294’967’295

float

Числа с плавающей точкой

от -2’147’483’648,0 до 2’147’483’647,0

Восьмибайтовые типы данных:

double

Числа с плавающей точкой удвоенной точности

от -9’223’372’036’854’775’808,0 до 9’223’372’036’854’775’807,0

Тип double действует как тип float, кроме Arduino Due

long long
int64_t

Целочисленные значения

от -9’223’372’036’854’775’808 до 9’223’372’036’854’775’807

unsigned long long
uint64_t

Беззнаковые целочисленные значения

от 0 до 18’446’744’073’709’551’615

Типы данных с определяемым размером

void

Отсутствие данных

Нет принимаемых или возвращаемых значений

String

Строка

тип A[размер]

Массив A указанного размера, с элементами указанного типа

тип A[ ]

Массив А указанного типа, без прямого указания размера

тип A[размер][размер]

Двумерный массив А указанного типа и размера

тип A[ ][ ]

Двумерный массив А указанного типа, без прямого указания размера

char A[размер]

Массив или строка, состоящая из указанного кол-ва символов

char A[ ]

Массив или строка, без прямого указания количества символов

Преобразование числовых типов:

тип (A);

Приводит значение A к указанному типу.

тип (A+B);

Приводит результат A+B к указанному типу.

(тип) A+B;

Сначала приводит A и B, к указанному типу, а потом вычисляет результат A+B.

*(тип*) A;

Приводит указатель A к указанному типу указателя.

Спецификаторы памяти:
(указываются перед типом)

const

Объявление переменной в виде константы, её можно читать, но нельзя менять, т.к. она хранится в области flash памяти.

volatile

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

static

Объявление локальной переменной, значение которой не теряется, между вызовами функции. Если переменная объявлена глобально (вне функций), то её нельзя подключить в другом файле.

extern

Объявление глобальной переменной, которая определена во внешнем файле.

register

Объявление локальной переменной, значение которой требуется хранить в регистрах процессора, а не в ОЗУ, для обеспечения ускоренного доступа.

Значения некоторых констант:

false = 0
true = 1

Ложь, используются вместо 0
Истина, используется вместо 1

LOW = 0
HIGH = 1

Низкий уровень
Высокий уровень

INPUT = 0
OUTPUT = 1
INPUT_PULLUP = 2

Конфигурация вывода как вход
Конфигурация вывода как выход
Конфигурация вывода как вход с подтяжкой

LSBFIRST = 0
MSBFIRST = 1

Передача младшим битом вперёд
Передача старшим битом вперёд

F_CPU =

Тактовая частота Arduino в Гц

PI = 3,141...
HALF_PI = 1,570...
TWO_PI = 6,283...
EULER = 2,718...

Число Пи
Половина числа Пи
Два числа Пи
Число Эйлера

Префиксы:

0b

Запись числа в 2ой системе (0b10101)

B

Запись числа в 2ой системе (B10101)

// до 8 бит

0

Запись числа в 8ой системе (012345)

0x

Запись числа в 16ой системе (0x1234A)

Модификаторы:

L

Число типа long (12345L)

LL

Число типа long lond (12345LL)

U

Число беззнакового типа (12345U)

UL

Комбинация модификаторов (12345UL)

E

Показатель экспоненты (3E-5 = 3•10-5)

Переменные, массивы, объекты, указатели, ссылки, ... :

объявление

Это указание имени и типа переменной.
int A; // объявление переменной А

определение

Это выделение памяти под переменную.
A=1; // определение ранее объявленной A

глобальные

Действуют постоянно, в любом месте кода.

локальные
(временные)

Создаются внутри функций, циклов и т.д.
удаляются из памяти при выходе из них.

символ

Указывается в одинарных кавычках.
char A='Z'; // присвоение символа «Z»

строка

Указывается в двойных кавычках.
String A="Z"; // присвоение строки «XY»

объект

Это переменная с указанием класса, вместо типа, через объект можно обращаться к методам класса

&
(ссылка)

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

int A=5; // создана переменная A = 5
int &C=A; // создана ссылка C на переменную A
A++; C++; // в результате A=7 и C=7
// Ссылку нельзя переопределить: &C=Z;

*
(указатель)

Указатель, это переменная, значением которой является адрес.

int *Y1=&A; // указателю Y1, передан адрес переменной A
int (*Y2)(int)=F; // указателю Y2, передан адрес функции F
B=Y1; // получаем адрес переменной A из указателя Y1
B=*Y1; // получаем значение A разыменовывая указатель
// Указатель можно переопределять: Y1=&Z;

typedef

Создание альтернативного имени для типа

typedef bool dbl; // создаём свой тип «dbl», как тип bool
dbl A=1; // создаём переменную A типа bool

массив

Это переменная состоящая из нескольких однотипных элементов, доступ к значениям которых осуществляется по их индексу.

int A[5]; // объявлен массив A из 5 элементов типа int
int A[2]={7,9}; // объявлен и определён массив A из 2 эл-тов
char A[ ]="Hi"; // создана строка A, как массив символов

struct
(структура)

Это объединение нескольких переменных под одним именем.

struct { int A=5; float B=3; } C; // создана структура «С»
int D = C.A; // получаем значение переменной A структуры С
int Z = C.A; // присваиваем Z значение A структуры С

Значения некоторых констант:

false = 0
true = 1

Ложь, используются вместо 0
Истина, используется вместо 1

Операторы:

Циклы:

for

for(инициализация; условие; приращение){тело;}

Инициализация - выполняется однократно. Условие - проверяется перед каждым проходом. Приращение - выполняется после каждого прохода. Код в теле цикла - выполняется, если выполняется условие.

while

while (условие) {тело цикла;}

Условие - проверяется перед каждым проходом. Код в теле цикла - выполняется, если выполняется условие.

do ... while

do {тело цикла;} while (условие);

Условие - проверяется после каждого прохода. Код в теле цикла - выполняется, если выполняется условие.

Условные операторы:

if

if (условие) {тело оператора;}

Код в теле оператора - будет выполнен если выполняется условие.

if ... else

if (условие) {тело1;} else {тело2;}

Если условие выполняется, то будет выполнен код тела1, иначе, код тела2.

if (условие1) {тело1;} else if (условие2) {тело2;}
Если выполняется условие1, то будет выполнен код тела1, иначе, если выполняется условие2, то будет выполнен код тела2. Можно указать любое количество условий

?:

переменная = условие ? значение1 : значение2;

Если условие выполняется, то оператор ?: вернёт значение1, иначе, значение2. Аналог конструкции: if(условие){A=значение1;}else{A=значение2;}

switch ... case

switch (переменная) { // проверяемое значение
case константа1: код; break; // сравнение и код
case константа2: код; break; // сравнение и код
default: код; // не обязательно
}

Будет выполнен весь код, который следует после константы, значение которой совпало с переменной. Если совпадений нет, то выполняется весь код, который следует после, необязательного, ключевого слова default. Оператор break описан ниже.

Прерывающие операторы:

break

Прерывает выполнение кода, в теле любого цикла или оператора switch ... case, завершая его выполнение.

continue

Прерывает выполнение кода в теле любого цикла, но не завершает его выполнение, а переходит к следующему проходу этого цикла.

return

void функция(параметры){ тело; ... return; ... тело;}

Прерывает выполнение кода в теле функции и передаёт управление коду, вызвавшему эту функцию. После оператора return можно указать значение, которое вернёт функция.

goto

метка: ... код; ... goto метка;

Прерывает выполнение кода и передаёт управление коду, следующему за меткой.

Получение адреса и разыменование указателя:

&

B=&C; // значением B станет адрес переменной C.
(взятие адреса) Возвращает адрес переменной или функции, а не значение.

*

B=*C; // значением B станет значение на которое ссылается указатель C.
(разыменование) Возвращает значение переменной по указателю, а не её адрес.

Директивы:

#include

Подключение кода из файла: #include <имя_файла.h>

#define

Установка макроса как константы: #define ccc 10
Установка макроса как функции: #define fff(a) ((a)*(a))

#undef

Отмена макроса: #undef fff

#if условие
#endif

Директивы условной компиляции. Код между #if и #endif будет скомпилирован, только если выполняется условие.

#else

Работает с директивой #if, как оператор if...else.

#elif условие

Работает с директивой #if, как оператор if...else if.

#ifdef

Сокращённая запись «#if defined fff»: #ifdef fff // если макрос установлен.

#ifndef

Сокращённая запись «#if (!defined fff)»: #ifndef fff // если макрос не установлен.

#error

Вывод сообщения компилятором: #error сообщение об ошибке.

#warning

Вывод сообщения компилятором: #warning предупреждение.

Арифметические:

=

Присвоение
int A = 18; // A = 18

+

Сложение
int A = 18 + 4; // A = 22

*

Умножение
int A = 18 * 4; // A = 72

/

Деление
int A = 18 / 4; // A = 4

%

Остаток от деления
int A = 18 % 4; // A = 2

Операторы сравнения: (возвращают true или false)

==

Ложь, используются вместо 0
Истина, используется вместо 1

Операторы сравнения: == Если равно bool A = 18 == 4; // A = 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - != Если не равно bool A = 18 != 4; // A = 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - < Если меньше bool A = 18 < 4; // A = 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <= Если меньше или равно bool A = 18 <= 4; // A = 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > Если больше bool A = 18 > 4; // A = 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >= Если больше или равно bool A = 18 >= 4; // A = 1

Значения некоторых констант:

false = 0
true = 1

Ложь, используются вместо 0
Истина, используется вместо 1

Значения некоторых констант:

false = 0
true = 1

Ложь, используются вместо 0
Истина, используется вместо 1

Значения некоторых констант:

false = 0
true = 1

Ложь, используются вместо 0
Истина, используется вместо 1