说明
tone()函数可以产生固定频率的PWM信号来驱动扬声器发声。发声时间长度和声调都可以通过参数控制。定义发声时间长度有两种方法,第一种是通过tone()函数的参数来定义发声时长,另一种是使用noTone()函数来停止发声。如果您在使用tone()函数时没有定义发声时间长度,那么除非您通过noTone()函数来停止声音,否则Arduino将会一直通过tone()函数产生声音信号。
Arduino一次只能产生一个声音。假如Arduino的某一个引脚正在通过tone()函数产生发声信号,那么此时让Arduino使用另外一个引脚通过tone()函数发声是不行的。
请注意:
1. 对于Arduino Mega以外的控制器,使用tone()函数时会影响引脚3和引脚11的PWM信号输出。
2. 如果你想要使用不同的引脚产生不同的声音音调,每一次更换发声引脚以前都要使用noTone函数停止上一个引脚发声。Arduino是不支持两个引脚同时发声的。
语法
tone(pin, frequency)
tone(pin, frequency, duration)
参数
pin: 发声引脚(该引脚需要连接扬声器)
frequency: 发声频率(单位:赫兹) – 无符号整数型
duration: 发声时长(单位:微秒,此参数为可选参数) – 无符号长整型
返回值
无
示例程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/* 多音调发声 在Arduino的不同引脚产生不同的声音 电路连接: * 在引脚 6, 7, 8分别连接8欧姆扬声器 created 8 March 2010 by Tom Igoe based on a snippet from Greg Borenstein This example code is in the public domain. */ void setup() { } void loop() { noTone(8); //停止8号引脚发声 tone(6, 440, 200); //6号引脚发声200毫秒 delay(200); noTone(6); //停止6号引脚发声 tone(7, 494, 500); //7号引脚发声500毫秒 delay(500); noTone(7); //停止7号引脚发声 tone(8, 523, 300); //8号引脚发声300毫秒 delay(300); } |