旋钮调光器
本课属于 Coddy Arduino 学习旅程的“输出”单元。第 5 课,共 24 课。
旋钮会让 analogRead() 返回 0 到 1023 之间的数字,而 analogWrite() 需要 0 到 255 之间的数字。这两个范围不匹配,所以用 map() 将一个范围转换为另一个范围:
int reading = analogRead(A0);
int brightness = map(reading, 0, 1023, 0, 255);
analogWrite(9, brightness);旋钮转到最低处时返回 0,LED 会熄灭;转到最高处时返回 1023,转换后就是 255,LED 会完全亮起。中间的每个位置都会对应一种中间亮度。
直接把读数写入 LED 不行:analogWrite() 只接受 0 到 255,所以像 600 这样的读数会导致亮度不正确。
挑战
简单旋钮连接在 A0,LED 连接在引脚 9。让旋钮控制亮度:
- 读取旋钮
- 用
map()将读数转换为 0 到 255 - 将数值写入 LED,然后等待 10 ms
按“运行”,转动旋钮,然后按“检查”。
亲手试试
const int knobPin = A0;
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
// 读取旋钮的值,将其映射到 0..255,再写入 LED
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输出中的所有课
自己练习: Arduino 在线编辑器