本次实验使用无源蜂鸣器模块模拟音乐的播放!
使用的歌曲是儿歌《一闪一闪小星星》(Twinkle Twinkle Little Star)!下面是节选“小星星”的一段音频:http://file.yfrobot.com/mp3/littleStar.mp3
不同的频率可以产生不同的声音,无源蜂鸣器内部无振荡源,我们可以通过控制板用2K - 5K的方波去驱动它,使其发出“多来米发索拉西”的声音。
- 硬件准备
arduino uno R3 、USB 数据线、UNO I/O扩展板、无源蜂鸣器模块、连接线
- 硬件连接
- 程序代码块
- 程序编写
float tone_list[7]={261.6 , 293.7 , 329.6 , 349.2 , 392.0 , 440.0 , 493.9};
long music_list[ ]={1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,1,1,5,5,6,6,5,4,4,3,3,2,2,1};
long high_list[ ]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
float rhythm_list[ ]={1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,2};
float dur=500;
void playmusic() {
for (int i = (1); i <= (sizeof(music_list)/sizeof(music_list[0])); i = i + (1)) {
tone(8,tone_list[(int)(music_list[(int)(i - 1)] - 1)] * pow(2, high_list[(int)(i - 1)]));
delay((dur * rhythm_list[(int)(i - 1)]));
noTone(8);
delay(10);
}
}
void setup(){
pinMode(8, OUTPUT);
}
void loop(){
playmusic();
}
观察效果:播放“小星星”的旋律
Mixly轻松入门12:播放“小星星”的旋律