Библиотека Math в Arduino

Math arduino

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

Библиотека Math.h — стандартная, встроенная в Arduino IDE библиотека математических функций. Она содержит функции, связанные с математикой, такие как получение квадратных корней, нахождение тригонометрических функций, нахождение степени и другие.

Сегодня мы рассмотрим описание этих функций и как с ними работать. Стоит отметить, что так как эта библиотека встроена в Arduino IDE, то ее не нужно отдельно скачивать и устанавливать. Для ее использования достаточно подключить ее в начале скетча с помощью #include math.h.

Константы библиотеки Math

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

КонстантаРезультатОписание
M_E2.718281828Постоянная e
M_LOG2E1.442695041Логарифм e по основанию 2
M_LOG10E0.434294482Логарифм e по основанию 10
M_LN20.693147181Натуральный логарифм 2
M_LN102.302585093Натуральный логарифм 10
M_PI3.141592654Постоянное число π
M_PI_21.570796327π деленное на 2 (π/2)
M_PI_40.785398163π деленное на 4 (π/4)
M_1_PI0.318309886Единица деленная на π (1/π)
M_2_PI0.636619772Двойка деленная на π (2/π)
M_2_SQRTPI1.128379167Двойка деленная на корень квадратный из π (2/корень(π))
M_SQRT21.414213562Корень квадратный 2 (корень(2)
M_SQRT1_20.707106781Единица деленная на корень квадратный из 2 (1/корень(2))
NAN__builtin_nan(“”)NaN («Not-a-Number» — «не число»)
INFINITY__builtin_inf()INFINITY — бесконечное число
Таблица 1. Константы библиотеки Math.h

Функции библиотеки Math

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

ФункцияОписание
cos (double x)Косинус (радианы)
sin (double x)Синус (радианы)
tan (double x)Тангенс (радианы)
fabs (double x)Модуль для float чисел
fmod (double x, double y)Остаток деления x на у для float
modf (double x, double *iptr)Возвращает дробную часть, целую хранит по адресу iptr
modff (float x, float *iptr)То же самое, но для float
sqrt (double x)Корень квадратный
sqrtf (float)Корень квадратный для float чисел
cbrt (double x)Кубический корень
hypot (double x, double y)Гипотенуза ( корень(x*x + y*y) )
square (double x)Квадрат ( x*x )
floor (double x)Округление до целого вниз
ceil (double x)Округление до целого вверх
frexp (double x, int *pexp)Функция определяет показатель степени (экспонента) и мантиссу. Экспонента храниться по адресу pexp
ldexp (double x, int exp)x*2exp
exp (double x)Экспонента (ex)
cosh (double x)Косинус гиперболический (радианы)
sinh (double x)Синус гиперболический (радианы)
tanh (double x)Тангенс гиперболический (радианы)
acos (double x)Арккосинус (радианы)
asin (double x)Арксинус (радианы)
atan (double x)Арктангенс (радианы)
atan2 (double y, double x)Арктангенс (y / x) (позволяет найти квадрант, в котором находится точка)
log (double x)Натуральный логарифм х ( ln(x) )
log10 (double x)Десятичный логарифм x ( log10 x)
pow (double x, double y)Степень ( xy )
isnan (double x)Проверка на nan (1 да, 0 нет)
isinf (double x)Возвр. 1 если x +бесконечность, 0 если нет
isfinite (double x)Возвращает ненулевое значение только в том случае, если аргумент имеет конечное значение
copysign (double x, double y)Возвращает x со знаком y (знак имеется в виду + -)
signbit (double x)Возвращает ненулевое значение только в том случае, если X имеет отрицательное значение
fdim (double x, double y)Возвращает разницу между x и y, если x больше y, в противном случае 0
fma (double x, double y, double z)Возвращает x*y + z
fmax (double x, double y)Возвращает большее из чисел
fmin (double x, double y)Возвращает меньшее из чисел
trunc (double x)Возвращает целую часть числа с дробной точкой
round (double x)Математическое округление
lround (double x)Математическое округление (для больших чисел)
lrint (double x)Округляет указанное значение с плавающей запятой до ближайшего целого значения, используя текущий режим округления и направление
Таблица 2. Функции из библиотеки Math.h

Макросы библиотеки

Так же библиотека Math.h содержит некоторые константы и функции в виде макросов, которые добавили сами разработчики. Функции очень удобные и нужные.

МакросЗначение
min(a,b)Возвращает меньшее из чисел a и b
max(a,b)Возвращает большее из чисел a и b
abs(x)Модуль числа x
constrain(value,min,max)Ограничить диапазон числа value до min и max
map(val, fromMin, fromMax, toMin, toMax)Перевести диапазон числа value от (fromMin, fromMax) в (toMin, toMax)
round(x)Математическое округление
radians(deg)Перевод градусов в радианы
degrees(rad)Перевод радиан в градусы
sq(x)Квадрат числа
PIПи
HALF_PIПол Пи
TWO_PIДва Пи
DEG_TO_RADКонстанта перевода град в рад 0.01745329
RAD_TO_DEGКонстанта перевода рад в град 57.2957786
Таблица 3. Макросы библиотеки

Пару слов о типах данных

Так же надо немного сказать о типах данных используемых в библиотеке. Основными типами являются Double и Float, это типы с плавающей запятой. Одно отличие все же есть: Double занимает в памяти 8 байт,  а Float4 байта.

Однако, так как Arduino 8 битный микроконтроллер, то она не может работать с числами больше 4 байт. Поэтому Double = Float.

Тип данных Int целочисленный тип занимает 2 байта и находится в диапазоне от -32 768 до 32 767.

Загрузки

Где купить

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