Arduino – функции – математика
Математические функции в Arduino IDE облегчают выполнение сравнение и преобразование значений, полученных путем измерения или передачи данных. Разработчики Arduino IDE не советуют использовать инкремент и декремент в рамках математических функций, оправдывая это тем, что результат может быть не таким, как ожидалось … Лично мы не заметили неисправность этого синтаксиса.
Функция min()
Функция min() возвращает меньшее значение из двух указанных в качестве параметров. Пример использования функции min():
int x; x=min(100,200); //результат x=100 x=min(a,b) // если a<b, то x=a, если a>b, то x=b
В первом случае переменная х будет иметь значение 100, во втором, в зависимости от значений переменных a и b, переменной x будет присвоено меньшее значение.
Функция max()
Аналогично функции min(), функция max() возвращает большее значение из двух указанных в качестве параметров. Пример использования функции max():
int x; x=max(100,200); //результат x=200 x=max(a,b) // если a>b, то x=a, если a<b, то x=b
Функция abs()
Функция abs() возвращает абсолютное значение указанного параметра. В случае, если заданным параметром является число больше или равно нулю, функция возвращает это же значение. В случае, если в качестве параметра мы зададим отрицательное число, функция вернет значение со знаком плюс. Несколько примеров применения функции abs():
int x=5; int y=-3; int z; z=abs(x); //z=5 z=abs(y); //z=3 z=abs(0); //z=0 z=abs(-12); //z=12
Функция constrain()
Функция constrain() позволяет произвести преобразование значения для указанного диапазона. Синтаксис функции выглядит следующим образом:
constrain(x, a, b);
- x — это значение, которое мы сравниваем;
- a — это наименьшее значение из интервала;
- b — это наибольшее значение из интервала.
Функция возвращает значение x, если x>a и x<b. Для х<а функция возвращает значение a, при x>b функция возвращает значение b. С помощью функции constrain() мы можем ограничить набор значений, полученных с аналогового входа для указанного интервала. Ниже пример использования функции constrain():
sensVal = constrain(sensVal, 10, 150);
//граница считанных значений 10…150
Функция map()
Функция map() позволяет пересчитать (масштабировать) значения из одного диапазона в другой. Это часто используется в ситуациях, когда мы хотим сделать пропорциональное управление. Например, на основе считанного входного напряжения мы контролируем сигнал ШИМ. Синтаксис функции map():
map(x,a1,a2,b1,b2);
- x — это значение, которое должно быть пересчитано;
- a1 и a2 — это граничные значения интервала, из которого следует пересчитать;
- b1 и b2 — это предельные значения нового интервала.
Функция вернет значение от b1 до b2.
Ниже пример применения функции map():
#define analogPin A0; #define digitalPin 9 void setup() { pinMode(analogPin,INPUT); pinMode(digitalPin,OUTPUT); } void loop() { int val = analogRead(analogPin); val = map(val, 0, 1023, 0, 255); //преобразование 10-битного числа в 8-битное analogWrite(pwmPin, val); }
В этом примере значение, считанное из 10-разрядного аналого-цифрового преобразователя, было преобразовано в 8-разрядное значение ШИМ.
Функция pow()
Функция pow() возвращает значение числа возведенного в степень. Синтаксис функции pow():
pow(x,y);
x — это число, возводимое в степень;
y — показатель степени (экспонента).
Примеры использования функции pow():
float x; int a; x = pow(2,3); //x=8.00 a = pow(2,3); //а=8 a = pow(3,2); //а=9
Функция sq()
Функция sq() позволяет вычислить квадрат заданного числа. Примеры использования функции sq():
int a=3; int x; x = sq(a); // x = 9 x = sq(2); // x = 4
Функция sqrt()
Функция sqrt() позволяет извлечь квадратный корень заданного числа. Примеры использования функции sqrt():
int a=16; int x; x = sqrt(a); // x = 4 x = sqrt(25); // x = 5
Функции sin(), cos(), tan()
Тригонометрические функции, содержащиеся в Arduino IDE, позволяют вычислить значения sin, cos, tg для угла, указанного в радианах. Вызов функции прост — каждая из этих функций требует в качестве параметра вызова значение угла в радианах.