用Arduino播放音乐

温馨提示
学校开设了Arduino的课程,老师也发了一整套的学习设备,于是心血来潮结合了以前用c语言beep函数制作音乐播放器的经验,制作了一个十分简单的Arduino版本的音乐播放器。本人菜鸟一个,希望可以帮助刚入门Arduino的小伙伴们提高学习兴趣,老鸟就忽略了吧!

一、实验目的:
结合工具简单的制作一个可以播放音乐的小音箱。

二、实验器具:
一个ArduinoUNO板子,四个杜邦线,一个蜂鸣器,一个面包板,一台电脑

三、实验流程
大家要先学会看简谱或者五线谱,本人就是学不太懂这个所以就找了一个十分简单的两只老虎,但是方法是通用的。关于简谱的学习就靠大家自己想办法了。然后就是 设计电路图(Fritzing),实物连接,编写代码烧录就ok了。用Arduino播放音乐_第1张图片
用Arduino播放音乐_第2张图片
用Arduino播放音乐_第3张图片

//播放两只老虎
//简单设置音调
#define H1 523  
#define H2 587
#define H3 659
#define H4 698
#define H5 784
#define H6 880
#define H7 988
#define yipai  400  //一拍的时间长度
int buzzer = 8;//设置控制蜂鸣器的数字IO脚

//根据简谱得来
int shenying[] = {H1,H2,H3,H1,    H1,H2,H3,H1,   H3,H4,H5,   H3,H4,H5,    H5,H6,H5,H4,H3,H1,  H5,H6,H5,H4,H3,H1, 0,  H2,H5,H1, 0,  H2,H5,H1};
int time[] = {1,1,1,1,   1,1,1,1,   1,1,2,   1,1,2,    1,1,1,1,1,1.5,  1,1,1,1,1,1.5,  0.75,  1,1,2,  0.5,  1,1,2};
int lenth;

void setup()
{
  pinMode(buzzer, OUTPUT); //设置数字IO脚模式,OUTPUT为输出
  lenth = sizeof(shenying) / sizeof(int);//获取数组长度
}

void loop()
{
  int i;
  for(i = 0; i < lenth; i++)
  {
    tone(buzzer, shenying[i]); //依次播放数组元素,即每个音符
    delay(time[i]*yipai); //每个音符持续的时间
    noTone(buzzer);//结束该音频
  }
  delay(1000);//1s后循环播放
}

四、心得体会
总的来说,当听到蜂鸣器可以播放音乐的时候,还是十分有趣的。只要你可以看得懂你想播放音乐的简谱,再多宏定义几个音调,理论上这个音乐就可以播放出来,大家快来动手实践一下吧!

你可能感兴趣的:(用Arduino播放音乐)