Menu
CoddyTech

用旋钮调节音高

本课属于 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) 可以避免草图每秒重新启动音调数千次。

challenge icon

挑战

简单

旋钮接在 A0,蜂鸣器接在引脚 8。让旋钮控制音高:

  • 读取旋钮的值
  • 用 map() 将读数转换为 200 到 2000 Hz 的频率
  • 用 tone() 播放,然后等待 10 ms

按“运行”并转动旋钮,然后按“检查”。

亲手试试

const int knobPin = A0;
const int buzzerPin = 8;

void setup() {
}

void loop() {
  // 读取旋钮的值,将其映射到 200..2000 Hz 的频率范围,然后播放声音
}
quiz icon自我测试

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

输出中的所有课

自己练习: Arduino 在线编辑器