< >
Home » Arduino语法参考 » Arduino语法-数学库

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)
//开平方 

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: arduino语法, arduino数学库