37种传感器(十八)之无源蜂鸣器模块+Stduino Nano&UNO
本文转载自:http://www.stduino.com/forum.php?mod=viewthread&tid=44&extra=page%3D1=
关键词:
51、stm32、arduino、stduino单片机、stduino UNO&Nano、无源蜂鸣器模块
说明:
我们已经在第十六讲介绍过有源蜂鸣器,因此这里只介绍无源蜂鸣器。
无源蜂鸣器没有震荡源,因此需要通过脉宽调制(PWM)输入特定的方波电压信号来发声。PWM原理可在其他教程中查找,本系列主要介绍传感器。
演奏一首音乐,最重要的每个音的音调(频率)和节拍(时长)。
C调音符对应的音调频率如下图:(每两个音调频率相差
)
我们可以通过tone(pin,frequnce)函数来控制无源蜂鸣器的振动频率,利用delay()来控制节拍,利用noTone(pin)来终止振动。
实验目的:
控制无源蜂鸣器演奏《天空之城》。天空之城是C调,一拍为四分之一音符长度,每一小节为四拍。
黑点在上为高音,在下为低音,没有为中音乐。而每两个竖杠之间为一小节,每一小节共有四个四分之一拍。下面如果画了一条横线,则是四分之一拍的二分之一,即八分之一拍;画了两条横线,则是四分之一的四分之一,即十六分之一拍。音符后面的横线则是前一音符的延续。
器材:
Stduino UNO/Nano;杜邦线、无源蜂鸣器模块
电路连接:
代码展示:
#define C0 (2)
#define C1_LOW (262)
#define C2_LOW (294)
#define C3_LOW (330)
#define C4_LOW (349)
#define C5_LOW (392)
#define C6_LOW (440)
#define C7_LOW (494)
#define C1 (523)
#define C2 (587)
#define C3 (659)
#define C4 (698)
#define C4S (740)//C4#
#define C5 (784)
#define C5S (831)//C5#
#define C6 (880)
#define C7 (988)
#define C1_HIGH (1046)
#define C2_HIGH (1175)
#define C3_HIGH (1318)
#define C4_HIGH (1397)
#define C5_HIGH (1568)
#define C6_HIGH (1760)
#define C7_HIGH (1976)
#define WHOLE (1)
#