Математические операции в Ардуино

Микроконтроллер Arduino может манипулировать константами и переменными, которые мы рассматривали ранее. В этом уроке мы рассмотрим, как использовать математические операции и выполнять вычисления в скетче с разными типами переменных. В языке Arduino IDE, как и во всех языках программирования есть операторы, позволяющие выполнять математические и логические операции.

Арифметические операции в Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega

Порядок вычисления в языке программирования Arduino IDE подчиняется обычным правилам арифметики: сначала выполняется выражение в круглых скобках, затем умножение и деление, потом операции сложения и вычитания.

Символы математических функций Arduino IDE

В следующей таблице представлены наиболее популярные операторы сложения и вычитания, операторы умножения и деления, которые часто используются в скетче.

название функции символ пример
присваивание = 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

Внимание: не путайте символ присваивания = в языке Arduino IDE с символом сравнения ==, который используется в логических операторах if else

Составные операторы математических функций

В следующей таблице представлены символы составных операторов, в которые входят операторы, образованные из комбинаций арифметических и операторов сравнения. Эти операторы позволяют сделать программу для микроконтроллера более краткой.

название функции символ пример
увеличение на единицу ++ 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

Функции abs(), max(), min() и sqrt()

max() Arduino принимает в качестве параметра два числа и возвращает наибольшее:

int x = max(23, 2); // возвращает 23

min() Arduino принимает в качестве параметра два числа и возвращает наименьшее:

int x = min(23, 2); // возвращает 2

Функция sqrt() Arduino позволяет получить квадратный корень числа в виде double:

float x = sqrt(25); // возвращает 5.00

abs() Arduino принимает параметр числа и возвращает положительное число:

int x = abs(-5); // возвращает 5
int x = abs(0);  // возвращает 0
int x = abs(5);  // возвращает 5



Тригонометрия: cos(), sin() и tan()

cos() принимает параметр угла в радианах и возвращает значение косинуса от 1 до -1:

float x = cos(90); // возвращает -0.45

sin() принимает параметр угла в радианах и возвращает значение синуса от 1 до -1:

float x = sin(90); // возвращает 0.89

Функция tan() Arduino принимает в качестве параметра угол в радианах и возвращает значение между минус бесконечностью и плюс бесконечностью:

float x = tan(0); // возвращает 0.00

Заключение. Помните, что целочисленные константы воспринимаются компилятором как тип int, следите за вхождением результата в диапазон допустимых значений. Арифметические операции часто используются в программировании при плавном включении светодиода с использованием цикла for() или while(), а также при вычислении температуры воздуха при подключении термистора к микроконтроллеру.



2 Replies to “Арифметика и математические операции Ардуино”

  1. Ребята! Поправьте статью. Косинус угла 90 градусов всегда равен нулю. А синус этого же угла равен единице. А то что у вас выдает -0.45 и 0.89 это скорее всего потому, что угол нужно задавать не в градусах а в радианах.

    1. Спасибо за сообщение.
      Все верно, в тригонометрических функциях угол следует указывать в радианах. Уточнили информацию в статье

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.