Arduino语法-数学库
函数列表
- min()
- max()
- abs()
- constrain()
- map()
- pow()
- sqrt()
min()函数说明
#define min(a, b) ((a)<(b)?(a):(b))
最小值
取两者之间最小值. 例如:
sensVal = min(sensVal, 100); // assigns sensVal to the smaller of sensVal or 100
// ensuring that it never gets above 100.
max()函数说明
#define max(a, b) ((a)>(b)?(a):(b))
最大值
取两者之间最大值. 例如:
sensVal = max(senVal, 20); // assigns sensVal to the larger of sensVal or 20
// (effectively ensuring that it is at least 20)
abs()函数说明
abs(x) ((x)>0?(x):-(x))
//求绝对值
constrain()函数说明
#define constrain(amt, low, high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
调整到区间
如果值 amt 小于 low, 则返回 low; 如果 amt 大于 high, 则返回 high; 否则, 返回 amt . 一般可以用于将值归一化到某个区间.
例如:
sensVal = constrain(sensVal, 10, 150);
// limits range of sensor values to between 10 and 150
map()函数说明
long map ( long x,
long in_min,
long in_max,
long out_min,
long out_max
)
等比映射
将位于[in_min, in_max]之间的x映射到[out_min, out_max].
参数:
x 要映射的值
in_min 映射前区间
in_max 映射前区间
out_min 映射后区间
out_max 映射后区间
例如下面的代码中用 map 将模拟量从[0,1023]映射到[0,255]区间:
// Map an analog value to 8 bits (0 to 255)
void setup() {}
void loop()
{
int val = analogRead(0);
val = map(val, 0, 1023, 0, 255);
analogWrite(9, val);
}
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
pow()函数说明
double pow (float base, float exponent)
//指数函数
sqrt()函数说明
double sqrt (double x)
//开平方
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号