用旋钮调节音高
本课属于 Coddy Arduino 学习旅程的“输出”单元。第 12 课,共 24 课。
旋钮可以像乐器一样控制蜂鸣器发声。思路和调光器相同:读取旋钮的值,转换读数,然后使用它。
这次的目标范围是频率。200 Hz 是低沉的嗡嗡声,2000 Hz 是尖锐的哨声,因此:
int reading = analogRead(A0);
int pitch = map(reading, 0, 1023, 200, 2000);
tone(8, pitch);map() 的新范围不必从 0 开始:0 会变成 200,1023 会变成 2000,旋钮转到中间时,数值会接近 1100。
再次调用 tone() 并传入新的频率,就能立即改变音符,因此转动旋钮时,音高也会随之变化。短暂的 delay(10) 可以避免草图每秒重新启动音调数千次。
挑战
简单旋钮接在 A0,蜂鸣器接在引脚 8。让旋钮控制音高:
- 读取旋钮的值
- 用
map()将读数转换为 200 到 2000 Hz 的频率 - 用
tone()播放,然后等待 10 ms
按“运行”并转动旋钮,然后按“检查”。
亲手试试
const int knobPin = A0;
const int buzzerPin = 8;
void setup() {
}
void loop() {
// 读取旋钮的值,将其映射到 200..2000 Hz 的频率范围,然后播放声音
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输出中的所有课
自己练习: Arduino 在线编辑器