Математические функции в программах Arduino

Математические функции в Arduino

В этой статье мы узнаем, как использовать математические функции в программе Arduino. Но для начала мы рассмотрим основные математические операторы, а затем рассмотрим порядок операций. А уже потом рассмотрим, как выполнять более сложные математические функции, такие как тригонометрия, квадраты, квадратные корни, степени и минимальное/максимальное значение.

Основные математические операторы

Основными математическими операторами являются:

  • знак плюс + для сложения;
  • знак минус для вычитания;
  • звездочка * для умножения;
  • косая черта / для деления.

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

Оператор присваивания в Arduino IDE — это знак равенства =. Оператор присваивания используется для присвоения значения переменной.

Например, когда мы объявляем целочисленную переменную с именем x и устанавливаем ее равной единице, то запись выглядит вот так:

int x = 1;

Это указывает программе сохранить целое число 1 в переменной x.

Для выполнения сложения мы используем оператор сложения +:

int x = 2 + 1;

Это сохранит результат 2 + 1 (три) в переменной x.

Вычитание выполняется с помощью оператора вычитания :

int x = 2 - 1;

Это сохранит результат 2 — 1 (один) в переменной x.

Умножение выполняется с помощью оператора умножения *:

int x = 2 * 4;

Это сохранит результат 2 * 4 (восемь) в переменной x.

Деление выполняется с помощью оператора деления /:

int x = 4 / 2;

Это сохранит результат 4/2 (два) в переменной x.

Мы также можем выполнять математические операции с переменными. Например, вместо использования целых чисел в приведенных выше примерах мы могли бы использовать переменные a и b:

int x = a / b;

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

void setup() {
  Serial.begin(9600);

  int x = 5 / 2;
  Serial.print(x);
}

Ответ должен быть 2.5, но если вы запустите код, на последовательный монитор будет выведена цифра два. Это происходит потому что x был объявлен с целочисленным типом данных. Int работает только с целыми числами, поэтому 2.5 округляется до 2.0.

Если мы объявим x как число с плавающей точкой и добавим десятичные дроби к целым числам следующим образом:

float x = 5.0 / 2.0;

на последовательный монитор должно быть выведено число 2.5 .

Порядок выполнения операций

Когда вы используете выражения с более чем одним оператором, подобный этому

int x = 5 + 6 * 2 - 1 / 3;

порядок операций очень важен, так как результат будет отличаться в зависимости от того, какие операции выполняются первыми. Например, если сначала добавить 5 и 6, получится 21,7. Но если сначала умножить 6 на 2, получится 16,7.

Так какой же правильный порядок?

Вот приоритет операций:

  1. Скобки
  2. Экспоненты
  3. Умножение
  4. Деление
  5. Сложение
  6. Вычитание

Сначала выполняются операции внутри круглых скобок. Затем экспоненты. Затем умножение и деление. Сложение и вычитание.

Поскольку математика внутри круглых скобок выполняется первой, их можно использовать для управления порядком операций.

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

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

float a = cos(b);
float a = sin(b);
float a = tan(b);

Функции тригонометрии принимают значение с плавающей точкой в радианах и возвращают значение с плавающей точкой в радианах.

Функция возведения числа в квадрат

В Arduino также есть функция для вычисления квадрата числа. Она вычисляет y в квадрате (y2):

float x = sq(y);

Функция квадратного корня

Чтобы вычислить квадратный корень из числа, используйте функцию квадратного корня. Она вычисляет квадратный корень из y (√y):

float x = sqrt(y);

Функция возведения числа в степень

Степенная функция вычисляет значение основания y, возведенное в степень числа x (yx). Синтаксис выглядит следующим образом:

int x = pow(base, exponent);

Например, чтобы найти результат 108, введите 10 в качестве первого аргумента и 8 в качестве второго аргумента:

int x = pow(10, 8);

Функции Min и Max в Ардуино

В Arduino также есть функции, которые находят минимальное значение и максимальное значение из пары чисел.

Функция min() вычисляет минимальное значение любых двух чисел:

int x = min(a, b);

Функция min() возвращает меньшее из двух значений. Переменные a и b могут быть любого типа данных.

Функция max() вычисляет максимальное значение любых двух чисел:

int x = max(a, b);

Функция max() возвращает большее из двух значений. Переменные a и b могут быть любого типа данных.

Min и Max полезны для поддержания значений выше или ниже определенного порога.

Например, предположим, вы хотите убедиться, что показания датчика температуры никогда не превышают 100 градусов. Вы могли бы использовать функцию min() следующим образом:

sensorValue = min(temperature, 100);

Это сохранит меньшее из двух чисел в переменной sensorValue. Даже если temp превышает 100, функция min() все равно выдаст 100.

Функция получения остатка от деления

В Arduino есть еще один оператор, который имеет дело с делением — это оператор получения остатка от деления. Оператор записывается со знаком процента % :

int x = a % b;

Оператор выполняет деление на целое число, а затем возвращает остаток. Скажем, например, что a = 5 и b = 2. Два делится на пять дважды, и у нас остается остаток от единицы. Таким образом, 5 % 2 будет равно единице.

Функция вычисления модуля числа

Еще одна полезная функция Arduino — функция модуля числа. Функция модуля возвращает положительное значение отрицательного числа.

Например, |-х| = х. Приведенная ниже функция abs() вернет модуль числа -10, то есть 10:

int x = abs(-10);

На самом деле Arduino способен выполнять гораздо более продвинутую математику. Эти расширенные функции доступны в библиотеке, называемой математической библиотекой Math.h. Перейдите по этой ссылке для получения дополнительной информации о ее функциях.

В статье мы охватили основные математические операторы, используемые в программировании Arduino. Не стесняйтесь оставлять комментарии, если у вас есть вопросы или что-нибудь добавить!

Документация

Компоненты

  • Arduino NANO
  • Arduino UNO
  • Arduino MEGA
5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии