Перейти к содержанию

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

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

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

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega

Дополнительные материалы на эту тему:

  1. Как подключить светодиод к Ардуино Уно
  2. Массивы данных, чисел и строк в Ардуино
  3. Обозначение радиоэлементов на схемах

Порядок вычислений в языке программирования 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 операторов, которые рассмотрены в этой статье, будет вполне достаточно. Если необходимо дополнить этот обзор и рассмотреть другие математические функции, напишите об этом в комментариях на этой странице.

Комментарии 2

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

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

newzaym
➜