Внимание! Полный урок по математическим операциям находится вот здесь.
Приспичило в проекте использовать логарифм, полез читать — наткнулся на полный список математических функций, которые встроены в Arduino (файл math.h). Привожу его здесь с переводом на русский, пользуйтесь!
Примечание: double
это тип данных для чисел с плавающей точкой, занимает 8 байт. float
— то же самое, но 4 байта. Arduino поддерживает только 4 байтные числа, т.е. для неё double
== float
. Соответственно некоторые функции из таблицы ниже получаются «дублирующие» при использовании на Arduino.
Константы
Константа | Результат | Описание |
M_E | 2.718281828 | Число e |
M_LOG2E | 1.442695041 | log_2 e |
M_LOG10E | 0.434294482 | log_10 e |
M_LN2 | 0.693147181 | log_e 2 |
M_LN10 | 2.302585093 | log_e 10 |
M_PI | 3.141592654 | pi |
M_PI_2 | 1.570796327 | pi/2 |
M_PI_4 | 0.785398163 | pi/4 |
M_1_PI | 0.318309886 | 1/pi |
M_2_PI | 0.636619772 | 2/pi |
M_2_SQRTPI | 1.128379167 | 2/корень(pi) |
M_SQRT2 | 1.414213562 | корень(2) |
M_SQRT1_2 | 0.707106781 | 1/корень(2) |
NAN | __builtin_nan(“”) | nan |
INFINITY | __builtin_inf() | infinity |
Функции
Функция | Описание |
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 http://cppstudio.com/post/1137/ |
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) | http://cppstudio.com/post/1121/ |
ldexp (double x, int exp) | x*2^exp http://cppstudio.com/post/1125/ |
exp (double x) | Экспонента (e^x) |
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 ( log_10 x) |
pow (double x, double y) | Степень ( x^y ) |
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) | Округляет указанное значение с плавающей запятой до ближайшего целого значения, используя текущий режим округления и направление |
Что есть ещё
Далее уже от самих разработчиков Arduino есть ещё маленький пакетик удобных макро-функций!
Макро | Значение |
min(a,b) | Возвращает меньшее из чисел |
max(a,b) | Возвращает большее из чисел |
abs(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 |
5
1
голос
Рейтинг статьи