Arduino内置教程-数字-多重音调
用tone()函数在多个扬声器上弹奏音调
这个例子展示怎样用tone()命令在多个输出上弹奏不同的音调。
tone()命令是通过Atmega的内置定时器来工作的,设置你想要的频率,并且用定时器来产生一个输出脉冲。因为它只用一个定时器,所以你只能一个定时器弹奏一个音调。然而你可以按顺序地在不同的引脚上弹奏音调。为了达到这个目的,你需要在移到下一个引脚前关闭这个引脚的定时器。
感谢Greg Borenstein澄清这部分。
硬件要求
- Arduino or Genuino 开发板
- 3 8 ohm扬声器
- 3 100 ohm 电阻
- 连接线
- 面包板
电路
原理图
样例代码
- 下面的程序在按顺序弹奏每一个扬声器的音调之前先关闭前一个扬声器。每个音调持续时间的注释和它后面的延时是一样的。
- 这是主程序:
/*
Multiple tone player
Plays multiple tones on multiple pins in sequence
circuit:
* 3 8-ohm speaker on digital pins 6, 7, and 8
created 8 March 2010
by Tom Igoe
based on a snippet from Greg Borenstein
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Tone4
*/
void setup() {
}
void loop() {
// turn off tone function for pin 8:
noTone(8);
// play a note on pin 6 for 200 ms:
tone(6, 440, 200);
delay(200);
// turn off tone function for pin 6:
noTone(6);
// play a note on pin 7 for 500 ms:
tone(7, 494, 500);
delay(500);
// turn off tone function for pin 7:
noTone(7);
// play a note on pin 8 for 500 ms:
tone(8, 523, 300);
delay(300);
}
更多
- tone()
- BlinkWithoutDelay - 不用delay()函数,使LED灯闪烁
- Button - 用一个按钮来控制LED灯
- Debounce - 读取一个按钮,并滤掉噪音
- DigitalInputPullup - 示范怎么用pinMode()来上拉引脚
- StateChangeDetection - 记录按键按下的次数
- toneKeyboard - 一个用压力传感器和压电扬声器的三键音乐键盘
- toneMelody - 用压电扬声器弹奏一段旋律
- tonePitchFollower - 用模拟输入在压电扬声器上弹奏高音