【Arduino官方教程第一辑】示例程序 2-9 制作你的特雷门琴

制作你的特雷门琴

本例向你展示如何使用tone()函数根据模拟信号的变化播放不同的音符。
用一个光敏电阻将Arduino或Genuino板变成一个简易版特雷门琴

完成本例所需的硬件设备

  • Arduino板Genuino板
  • 8Ω扬声器
  • 光敏电阻
  • 100Ω电阻
  • 面包板连接线/杜邦线、
  • 面包板

电路搭建

【Arduino官方教程第一辑】示例程序 2-9 制作你的特雷门琴_第1张图片

将扬声器一端通过100Ω的电阻连接到9号引脚,另一端连接到GND。5V连接到光敏电阻一端,另一端连接到A0口,并加一个4.7KΩ下拉电阻。

原理图

【Arduino官方教程第一辑】示例程序 2-9 制作你的特雷门琴_第2张图片

例程代码

本例的代码超级简单。你只需要读取模拟信号输入值然后将它与一些音符对应即可。人类能够听见20-20,000HZ的声音,但120-1,500HZ的声音比较适合在这个例子中使用。

为了达到音符与模拟输入值的对应,你需要知道模拟信号值的范围。在这个电路中,这个值在400-1000左右。你可改变传入map函数的参数来根据你用的传感器进行调整。

代码如下:

/* 制作你的特雷门琴 根据模拟输入值的改变播放不同的音符。 电路搭建: * 9号引脚连接8Ω扬声器 * 光敏电阻连0-5V * 4.7KΩ电阻连A0-GND 代码是公开的。 */


void setup() {
  // 初始化串口连接(调试用):
  Serial.begin(9600);
}

void loop() {
  // 读取传感器值:
  int sensorReading = analogRead(A0);
  //打印一下传感器的值来找到范围:
  Serial.println(sensorReading);
  // 将模拟输入值的对应到120-1500HZ的声音
  //注:可能要根据实际情况调整下列数值:
  int thisPitch = map(sensorReading, 400, 1000, 120, 1500);

  // 播放音符:
  tone(9, thisPitch, 10);
  delay(1);        // delay以保证稳定
}

相关资料

Array()
for()
tone()
map()
LED闪烁进阶:不用delay()函数的LED闪烁工程。
按钮:用按钮控制LED。
按键去抖:读取一个按钮状态,并且滤去干扰。
数字引脚上拉电阻:展示pinMode()函数INPUT_PULLUP 常量的使用。
按钮状态改变的探测:记录按钮被按下的次数。
音乐键盘:使用压力传感器和压电扬声器制作三键电子琴。
使用tone()函数弹奏一段小曲:使用压电扬声器播放一段曲调。
曲调2:使用tone()函数操作多个扬声器播放曲调。
曲调3:根据模拟信号通过压电扬声器播放一个音调。

更新进程

日期 日志 译者
2016年5月4日 创建并翻译文档 唐家勋

译者:唐家勋
邮箱:[email protected]
QQ:649196486
转载请注明出处,一切只因为热爱。
希望您能指出宝贵意见,谢谢。
【Arduino官方教程第一辑】示例程序 2-9 制作你的特雷门琴_第3张图片

你可能感兴趣的:(函数,硬件,arduino)