В 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