数学运算

min()

min(x, y)
描述:
计算两个数字中的最小值。
参数:
X:第一个数字,任何数据类型
Y:第二个数字,任何数据类型
返回值:
两个数字中的较小者。
举例:

sensVal = min(sensVal,100); //将 sensVal 或 100 中较小者赋值给 sensVal
//确保它永远不会大于 100。

直观的比较,max() 方法常被用来约束变量的下限,而 min() 常被用来约束变量的上限。

警告:
由于 min() 函数的实现方式,应避免在括号内出现其他函数,这将导致不正确的结果

min(a++, 100); //避免这种情况 - 会产生不正确的结果
 
a++; 
min(a, 100); //使用这种形式替代 - 将其他数学运算放在函数之外

max()

max(x,y)
描述:
计算两个数的最大值。
参数:
X:第一个数字,任何数据类型
Y:第二个数字,任何数据类型
返回值:
两个参数中较大的一个。
例子:

sensVal = max(senVal, 20); // 将20或更大值赋给sensVal
//(有效保障它的值至少为20)

和直观相反,max()通常用来约束变量最小值,而min()通常用来约束变量的最大值。

警告:
由于max()函数的实现方法,要避免在括号内嵌套其他函数,这可能会导致不正确的结果。
max(a--, 0);   //避免此用法,这会导致不正确结果 
a--;           // 用此方法代替
max(a, 0);     // 将其他计算放在函数外

ABS()

ABS(X)
描述:
计算一个数的绝对值。
参数:
X:一个数返回如果x大于或等于0,则返回它本身。 如果x小于0,则返回它的相反数。

警告:
由于实现ABS()函数的方法,避免在括号内使用任何函数(括号内只能是数字),否则将导致不正确的结果。
ABS(a+ +;  //避免这种情况,否则它将产生不正确的结果
 
a + +;  //使用这段代码代替上述的错误代码
ABS(a);  //保证其他函数放在括号的外部

constrain()

constrain(x,a,b)
描述:
将一个数约束在一个范围内
参数:
x:要被约束的数字,所有的数据类型适用。
a:该范围的最小值,所有的数据类型适用。
b:该范围的最大值,所有的数据类型适用。
返回值:
x:如果 x是介于 a 和 b之间 a:如果 x小于a b:如果 x大于b
例子:

sensVal = constrain(sensVal, 10, 150);
//传感器返回值的范围限制在10到150之间

map()

map(value, fromLow, fromHigh, toLow, toHigh)
描述:
将一个数从一个范围映射到另外一个范围。也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。
不限制值的范围,因为范围外的值有时是刻意的和有用的。如果需要限制的范围, constrain() 函数可以用于此函数之前或之后。
注意,两个范围中的“下限”可以比“上限”更大或者更小,因此 map() 函数可以用来翻转数值的范围。
例如:

y = map(x, 1, 50, 50, 1);

这个函数同样可以处理负数,请看下面这个例子:

y = map(x, 1, 50, 50, -100);

是有效的并且可以很好的运行。
map() 函数使用整型数进行运算因此不会产生分数,这时运算应该表明它需要这样做。小数的余数部分会被舍去,不会四舍五入或者平均。
参数:
value:需要映射的值
fromLow:当前范围值的下限
fromHigh:当前范围值的上限
toLow:目标范围值的下限
toHigh:目标范围值的上限
返回值:
被映射的值。
例子:

/*映射一个模拟值到8位(0到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()

pow(base, exponent)
描述: 计算一个数的幂次方。Pow()可以用来计算一个数的分数幂。这用来产生指数幂的数或曲线非常方便。
参数:
base:底数(float)
exponent:幂(float)
返回值:
一个数的幂次方值(double)
例子:
详情见 库代码中的fscale函数。

sqrt()

sqrt(x)
描述:
计算一个数的平方根。
参数:
x:被开方数,任何类型
返回值:
此数的平方根,类型double