将数值保持在范围内
本课属于 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);挑战
简单旋钮连接在 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
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输入中的所有课
自己练习: Arduino 在线编辑器