极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12357|回复: 4

arduino播放《可爱的蓝精灵》音乐

[复制链接]
发表于 2016-4-25 09:07:40 | 显示全部楼层 |阅读模式
各位叔叔阿姨哥哥姐姐:我是五年级的小学生,学习arduino两个多月了。学习论坛里高手的程序,做了个用小喇叭播放《The cute smurfs》音乐的程序。
接线嘛,用9引脚,哪个脚都行。加一个三极管会特别大声,不加三极管直接连线也可以,声音小一点。
  1. //用小喇叭播放《可爱的蓝精灵The cute Smurfs》

  2. #define C3 165
  3. #define C4 175
  4. #define C5 196
  5. #define C6 220
  6. #define C7 247
  7. #define D0 -1
  8. #define D1 262
  9. #define D2 294
  10. #define D3 330
  11. #define D4 349
  12. #define D4s 370
  13. #define D5 392
  14. #define D6 440
  15. #define D7 494
  16. #define E1 523
  17. #define E1s 554
  18. #define E2 587
  19. #define E3 659
  20. #define E4 698
  21. #define E4s 740
  22. #define E5 784
  23. #define E6 880
  24. //音阶对应的频率
  25. #define WHOLE 4
  26. #define HALF 2
  27. #define QTR 1
  28. //定义全拍和半拍
  29. int tune[] =
  30. {
  31. D3,D4, D5,E3,E1,D5,D3,D2,D3,D4,E2,D7,D4,D2,D1,D2,D3,D2,D3,D4,D3,D4,
  32. D5,D3,D4,D6,D5,D6, D7,E1,E1s,E2,E2,E3,E4,E4s,E5,D0,C5, D1,D3,C5,D3,D1,D3,C5,
  33. D3,D4,D5,D4,D3,D4,D5,D4,D3,D4,D5,D5,D4s,D5,E3,E1,//在山的那边海的那边有一群蓝精灵
  34. D2,D3,D4,D3,D4,E2,D7,D2,D3,D4,D3,D4,D6,D5,//他们活泼又聪明,他们调皮又灵敏
  35. D3,D4,D5,D4,D3,D4,D5,D4,D3,D4,D5,D5,D4s,D5,E3,E2,//他们自由自在生活在那绿色的大森林
  36. D2,D3,D4,D3,D4,E2,E1,D7,D6,D7,E1,//他们善良勇敢相互都关心
  37. E1,D5,D5,E3,E3,E1,D5,D3, D3,D5,D4,E2,E2,D7,D4,D2,//哦,可爱的蓝精灵,哦,可爱的蓝精灵
  38. D2,D3,D4,D5,D4,D3,D4,D5,D4,D3,D4,D5,D5,D4s,D5,E1,E3,//他们齐心合力开动脑筋斗败了格格巫
  39. D2,D3,D4,D3,D4,E2,E1,D7,D6,D7,E1,//他们唱歌跳舞快乐多欢欣

  40. };  //曲子的音符部分

  41. int duration[]=
  42. {
  43.   1,1,2,2,2,2,4+2,1,1,2,2,2,2,4+2,1,1,2,1,1,2,1,1,
  44. 2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,2,4,2,2,2,2,2,2,2,
  45. 1,1,2,2,2,2,2,2,2,2,2,1,1,2,2,4+2,
  46. 1,1,2,2,2,2,4+2,1,1,2,2,2,2,4+2,
  47. 1,1,2,2,2,2,2,2,2,2,2,1,1,2,2,4+2,
  48. 1,1,2,2,2,2,2,2,2,2,4,
  49. 4,4,4,2,2,4,4,4+4,4,4,4,2,2,4,4,4+4,
  50. 4+2,1,1,2,2,2,2,2,2,2,2,2,1,1,2,2,4+2,
  51. 1,1,2,2,2,2,2,2,2,2,4+4

  52. }; //曲子的节拍部分,用一个序列定义为duration

  53. int length;//定义一个变量,后面用来表示共有多少个音符
  54. int tonePin=9;//喇叭用9引脚

  55. void setup() {
  56.   pinMode(tonePin,OUTPUT);//设置喇叭的pin为输出模式
  57. length = sizeof(tune)/sizeof(tune[0]);
  58. }

  59. void loop() {
  60.   for(int x=0;x<length;x++) //循环音符的次数
  61.   {
  62.     tone(tonePin,tune[x]);//此函数依次播放tune序列里的数组,即每个音符
  63.   delay(130*duration[x]);//每个音符持续的时间,即节拍duration,120是调整时间的,越大,曲子速度越慢,越小曲子速度越快
  64.     noTone(tonePin);//停止当前音符,进入下一音符
  65.   }
  66.   delay(2000);//等待2秒后,循环重新开始
  67. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-4-25 09:53:47 | 显示全部楼层
好好学习,不错不错,期待你做出更好的作品
回复 支持 反对

使用道具 举报

发表于 2016-4-25 12:47:01 | 显示全部楼层
好,有潜力
回复 支持 反对

使用道具 举报

发表于 2016-4-25 12:56:17 来自手机 | 显示全部楼层
好好学习,潜力十足
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 15:42 , Processed in 0.045114 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表