1

我目前正在查看以下代码(可以在此处找到

void MPU6050::CalibrateAccel(uint8_t Loops,uint8_t OffsetSaveAddress) {
  double kP = 0.15;
  double kI = 8;
  float x;
  x = (100 - map(Loops, 1, 5, 20, 0)) * .01;
  kP *= x;
  kI *= x;
  PID( 0x3B,  OffsetSaveAddress,  kP, kI,  Loops);
}

具体来说,我正在努力理解这条线:

x = (100 - map(Loops, 1, 5, 20, 0)) * .01;

是在做?

我可以为 map() 找到的最佳匹配函数在这里,但它似乎与传递给函数的整数参数不匹配。

显然,理想情况下我会运行这段代码,但不幸的是我还无法编译它。

我是否正确地找到了被调用的函数以及这个函数在给定参数下的行为是什么?我假设这是一个 map() 函数,类似于其他语言/框架(如 python、jquery 等)中的任何其他典型 map 函数。

谁能指导我正确的方向?

4

1 回答 1

1

map在 中定义math,将一个数字从一个范围重新映射到另一个范围。语法是 map(value, fromLow, fromHigh, toLow, toHigh)

因此, map(Loops, 1, 5, 20, 0)) 意味着变量的值Loops最初将在 (1,5) 之间搜索,但结果将在 20 到 0 之间,因为它被重新映射。

于 2019-07-27T13:30:15.680 回答