В языке Arduino IDE, как и во всех языках программирования, есть операторы, которые позволяют выполнять математические и логические операции. Мы рассматривали ранее, что микроконтроллеры Arduino могут работать с разными типами данных и переменных. В этом уроке мы рассмотрим, как использовать математические операции и выполнять арифметические действия с разными типами переменных и числами в скетче.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
Дополнительные материалы на эту тему:
Порядок вычислений в языке программирования Arduino IDE подчиняется всем известным правилам арифметики: сначала выполняется выражение в скобках, затем операции умножения и деления, и в конце выполняются операции сложения и вычитания. Примечание: не путайте символ присваивания = в языке программирования Arduino IDE с символом сравнения ==, который используется в логических конструкциях if else в скетче.
Таблица: математические операторы Arduino
В следующей таблице перечислены символы математических операторов в языке Ардуино с примерами, которые чаще всего используются в программировании.
| название функции | символ | пример |
| присваивание | = | int x = 5; // возвращает 5 |
| сложение | + | int x = 5 + 2; // возвращает 7 |
| вычитание | — | int x = 5 - 2; // возвращает 3 |
| умножение | * | int x = 5 * 2; // возвращает 10 |
| деление | / | int x = 5 / 2; // возвращает 2 |
| остаток от деления | % | int x = 5 / 2; // возвращает 1 |
В следующей программе приведем для примера наиболее простую арифметическую операцию — сложения. Также произведем деление целочисленных значений с сохранением ответа в переменную int x — в этом случае ответ будет целым числом, а остаток деления просто отбрасывается. Если использовать в вычислениях переменную float y, то дробная часть не будет отбрасываться. Учитывайте это при написании скетчей.
Программа с примером математических операций
int x;
float y;
void setup() {
Serial.begin(9600);
// операция сложения, вернет ответ 9
x = 1 + 6 + 2;
Serial.println("x = " + String(x));
delay(1000);
// операция деления без остатка, вернет ответ 3
x = (1 + 6) / 2;
Serial.println("x = " + String(x));
delay(1000);
// операция деления с остатком, вернет ответ 3.50
y = (1 + 6) / 2.0;
Serial.println("y = " + String(y));
delay(1000);
}
void loop() {
}
Таблица: составные математические операторы
В следующей таблице приведены символы составных операторов, к которым относятся операторы, образованные из комбинаций арифметических операторов и операторов сравнения. Унарные операторы позволяют сделать программу более лаконичной.
| название функции | символ | пример |
| увеличение на единицу | ++ | x++ // равносильно x = x + 1 |
| уменьшение на единицу | — — | x-- // равносильно x = x - 1 |
| составное сложение | += | x += 2; // равносильно x = x + 2 |
| составное вычитание | -= | x -= 2; // равносильно x = x - 2 |
| составное умножение | *= | x *= 2; // равносильно x = x * 2 |
| составное деление | /= | x /= 2; // равносильно x = x / 2 |
| остаток от деления | %= | x %= 2; // равносильно x = x % 2 |
Скетч с составными математическими операторами
В следующем примере с использованием составного оператора сложения к переменной byte x будет прибавляться значение 20. Обратите внимание, что переменная типа byte может хранить в себе максимальное значение, равное 255. Таким образом, в какой то момент произойдет переполнение переменной byte и она «обнулится». Этот факт также следует учитывать при выполнении арифметических операций с Ардуино.
byte x = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
// каждый цикл прибавляем к переменной 20
x += 20;
Serial.println("x = " + String(x));
delay(500);
}
Математические функции в Ардуино
Функция abs() Arduino
Функция абсолютного значения гарантирует, что введенное число будет положительным и используется для преобразования отрицательного числа в положительное. Функция abs() принимает в качестве параметра число и возвращает положительное число:
int x = abs(-2); // вернет 2 int x = abs(0); // вернет 0 int x = abs(2); // вернет 2
Функция max() Arduino
Функция max() принимает два числа в качестве параметров и возвращает большее из них:
int x = max(2, 5); // вернет 5
Функция min() Arduino
Функция min() принимает два числа в качестве параметров и возвращает меньшее из них:
int x = min(2, 5); // вернет 2
Функция sqrt() Arduino
Функция sqrt() в Ардуино используется для получения квадратного корня из числа:
float x = sqrt(25); // вернет 5.00
Функция sq() Arduino
Функция sq() в Ардуино возвращает квадрат числа, заданного параметром:
float x = sq(5); // вернет 25.00
Функции тригонометрии в Ардуино

Функция cos() Arduino
Функция cos() принимает параметр угла в радианах и возвращает значение от 1 до -1:
float x = cos(90); // вернет -0.45
Функция sin() Arduino
Функция sin() принимает параметр угла в радианах и возвращает значение от 1 до -1:
float x = sin(90); // вернет 0.89
Функция tan() Arduino
Функция tan() принимает в качестве параметра угол в радианах и возвращает значение между минус бесконечностью и плюс бесконечностью:
float x = tan(0); // вернет 0.00
Заключение. Это далеко не все арифметические функции, которые можно использовать при программировании микроконтроллера Ардуино. Но для подавляющего большинства проектов на Arduino операторов, которые рассмотрены в этой статье, будет вполне достаточно. Если необходимо дополнить этот обзор и рассмотреть другие математические функции, напишите об этом в комментариях на этой странице.

Здравствуйте! Меня зовут Полина, я медиабайер из компании adlook. Подскажите, Вы размещаете медиа рекламу на сайте?
adlook / arduino-site.ru
А вы как думаете?