В Arduino существуют различные библиотеки, которые можно использовать для разных целей, math.h – одна из таких библиотек.
Библиотека Math.h – стандартная, встроенная в Arduino IDE библиотека математических функций. Она содержит функции, связанные с математикой, такие как получение квадратных корней, нахождение тригонометрических функций, нахождение степени и другие.
Сегодня мы рассмотрим описание этих функций и как с ними работать. Стоит отметить, что так как эта библиотека встроена в Arduino IDE, то ее не нужно отдельно скачивать и устанавливать. Для ее использования достаточно подключить ее в начале скетча с помощью #include math.h.
Константы библиотеки Math
В первую очередь рассмотрим константы, которые используются функциями, но и вы можете их использовать в своих целях.
| Константа | Результат | Описание |
|---|---|---|
| M_E | 2.718281828 | Постоянная e |
| M_LOG2E | 1.442695041 | Логарифм e по основанию 2 |
| M_LOG10E | 0.434294482 | Логарифм e по основанию 10 |
| M_LN2 | 0.693147181 | Натуральный логарифм 2 |
| M_LN10 | 2.302585093 | Натуральный логарифм 10 |
| M_PI | 3.141592654 | Постоянное число π |
| M_PI_2 | 1.570796327 | π деленное на 2 (π/2) |
| M_PI_4 | 0.785398163 | π деленное на 4 (π/4) |
| M_1_PI | 0.318309886 | Единица деленная на π (1/π) |
| M_2_PI | 0.636619772 | Двойка деленная на π (2/π) |
| M_2_SQRTPI | 1.128379167 | Двойка деленная на корень квадратный из π (2/корень(π)) |
| M_SQRT2 | 1.414213562 | Корень квадратный 2 (корень(2) |
| M_SQRT1_2 | 0.707106781 | Единица деленная на корень квадратный из 2 (1/корень(2)) |
| NAN | __builtin_nan(“”) | NaN (“Not-a-Number” – “не число”) |
| INFINITY | __builtin_inf() | INFINITY – бесконечное число |
Функции библиотеки 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) | Округляет указанное значение с плавающей запятой до ближайшего целого значения, используя текущий режим округления и направление |
Макросы библиотеки
Так же библиотека 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 |
Пару слов о типах данных
Так же надо немного сказать о типах данных используемых в библиотеке. Основными типами являются Double и Float, это типы с плавающей запятой. Одно отличие все же есть: Double занимает в памяти 8 байт, а Float – 4 байта.
Однако, так как Arduino 8 битный микроконтроллер, то она не может работать с числами больше 4 байт. Поэтому Double = Float.
Тип данных Int целочисленный тип занимает 2 байта и находится в диапазоне от -32 768 до 32 767.
Загрузки
Где купить
- Arduino NANO
- Arduino UNO
- Arduino MEGA



