Menu
CoddyTech

将数值保持在范围内

本课属于 Coddy Arduino 学习旅程的“输入”单元。第 11 课,共 22 课。

有时只需要计算范围中的一部分。比如,只关心旋钮行程的中间部分,也就是读数 200 到 800,并将其映射为 0 到 100 百分比:

int percent = map(reading, 200, 800, 0, 100);

这样,读数为 200 时得到 0,读数为 800 时得到 100,但 map() 不会在范围边界处停止。读数为 0 时会得到 -33,读数为 1023 时会得到 137。低于 0% 或高于 100% 都没有意义。

constrain(x, low, high) 会将数字限制在一个范围内:小于 low 的值变为 low,大于 high 的值变为 high,介于两者之间的值保持不变。

percent = constrain(percent, 0, 100);
challenge icon

挑战

简单

旋钮连接在 A0 上。输出百分比读数,其中 200 到 800 对应 0 到 100:

  • 将读数从 200 到 800 映射到 0 到 100
  • 用 constrain() 将它限制在 0 到 100 之间
  • 输出它,然后等待 100 ms

按“运行”,将旋钮向两端转到底,然后按“检查”。

亲手试试

void setup() {
  Serial.begin(9600);
}

void loop() {
  int reading = analogRead(A0);
  // 将 200..800 映射到 0..100,确保结果在 0..100 范围内,打印结果,等待 100 ms
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

输入中的所有课

自己练习: Arduino 在线编辑器