极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: wali

Arduino学习心得-简单制作各种歌曲

  [复制链接]
发表于 2012-9-25 15:26:26 | 显示全部楼层
好给力~~~学习学习~~~
回复 支持 反对

使用道具 举报

发表于 2012-10-2 21:44:01 | 显示全部楼层
lz太给力了写了这么好玩的程序,但是好像基准频率有点问题,有些音节失真了。
小弟不才微改了一下频率,放一首欢乐颂上来与大家分享,多多包涵
  1. #define NOTE_D0 -1
  2. #define NOTE_D1 523
  3. #define NOTE_D2 580
  4. #define NOTE_D3 659
  5. #define NOTE_D4 698
  6. #define NOTE_D5 783
  7. #define NOTE_D6 800
  8. #define NOTE_D7 987

  9. #define NOTE_DL1 261
  10. #define NOTE_DL2 293
  11. #define NOTE_DL3 329
  12. #define NOTE_DL4 349
  13. #define NOTE_DL5 391
  14. #define NOTE_DL6 400
  15. #define NOTE_DL7 493

  16. #define NOTE_DH1 1046
  17. #define NOTE_DH2 1174
  18. #define NOTE_DH3 1318
  19. #define NOTE_DH4 1396
  20. #define NOTE_DH5 1567
  21. #define NOTE_DH6 1700
  22. #define NOTE_DH7 1975
  23. //以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,后面可以随意编写D调的各种歌,我这里用NOTE_D+数字表示音符,NOTE_DH+数字表示上面有点的那种音符,NOTE_DL+数字表示下面有点的那种音符。这样后面写起来比较好识别。
  24. #define WHOLE 1
  25. #define HALF 0.5
  26. #define QUARTER 0.25
  27. #define EIGHTH 0.25
  28. #define SIXTEENTH 0.625
  29. //这部分是用英文对应了拍子,这样后面也比较好看
  30. int tune[] =
  31. {
  32.   NOTE_D3,NOTE_D3,NOTE_D4,NOTE_D5,NOTE_D5,NOTE_D4,NOTE_D3,NOTE_D2,
  33.   NOTE_D1,NOTE_D1,NOTE_D2,NOTE_D3,NOTE_D3,NOTE_D2,NOTE_D2,
  34.   NOTE_D0,
  35.   NOTE_D3,NOTE_D3,NOTE_D4,NOTE_D5,NOTE_D5,NOTE_D4,NOTE_D3,NOTE_D2,
  36.   NOTE_D1,NOTE_D1,NOTE_D2,NOTE_D3,NOTE_D2,NOTE_D1,NOTE_D1,
  37.   NOTE_D0,
  38.   NOTE_D2,NOTE_D2,NOTE_D3,NOTE_D1,NOTE_D2,NOTE_D3,NOTE_D4,NOTE_D3,NOTE_D1,
  39.   NOTE_D2,NOTE_D3,NOTE_D4,NOTE_D3,NOTE_D2,NOTE_D1,NOTE_D2,NOTE_DL5,
  40.   NOTE_D0,
  41.   NOTE_D3,NOTE_D3,NOTE_D4,NOTE_D5,NOTE_D5,NOTE_D4,NOTE_D3,NOTE_D2,
  42.   NOTE_D1,NOTE_D1,NOTE_D2,NOTE_D3,NOTE_D2,NOTE_D1,NOTE_D1,

  43. };//这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数

  44. float duration[]=
  45. {
  46.   1,1,1,1,1,1,1,1,1,1,1,1,2,0.5,1,
  47.   1,
  48.   1,1,1,1,1,1,1,1,1,1,1,1,2,0.5,1.5,
  49.   1,
  50.   1,1,1,1,1,0.5,0.5,1,1,1,0.5,0.5,1,1,1,1,1.5,
  51.   1,
  52.   1,1,1,1,1,1,1,1,1,1,1,1,2,0.5,1.5,

  53. };//这部分是整首曲子的接拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)
  54. int length;//这里定义一个变量,后面用来表示共有多少个音符
  55. int tonePin=5;//蜂鸣器的pin

  56. void setup()
  57. {
  58.   pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
  59.   length = sizeof(tune)/sizeof(tune[0]);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符
  60. }

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

使用道具 举报

发表于 2012-10-6 22:46:23 | 显示全部楼层
蜂鸣器是有源的还是无源的?有源的太难听了
回复 支持 反对

使用道具 举报

发表于 2012-11-8 23:11:41 | 显示全部楼层
,很好,学习
回复 支持 反对

使用道具 举报

发表于 2012-12-2 14:51:19 | 显示全部楼层
求通过网页控代码、、
回复 支持 反对

使用道具 举报

发表于 2012-12-2 14:52:52 | 显示全部楼层
音乐不太好听、、怎么解决听上去比较好呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-12-3 07:54:41 | 显示全部楼层
keaihj 发表于 2012-12-2 14:52
音乐不太好听、、怎么解决听上去比较好呢?

还在玩单音节?你out了 http://www.geek-workshop.com/thread-2611-1-3.html 本篇略屌
回复 支持 反对

使用道具 举报

发表于 2012-12-11 21:55:09 | 显示全部楼层
好,做个记号
回复 支持 反对

使用道具 举报

发表于 2012-12-14 17:06:52 | 显示全部楼层
好贴好贴,顶了
回复 支持 反对

使用道具 举报

发表于 2012-12-14 17:59:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-12-16 18:47:00 | 显示全部楼层
这个不错!
回复 支持 反对

使用道具 举报

发表于 2012-12-20 16:56:57 | 显示全部楼层
先留个脚印,回去研究好了,做给闺女玩,肯定喜欢。
回复 支持 反对

使用道具 举报

发表于 2012-12-21 16:03:54 | 显示全部楼层
请问:编绎时总出错
mid.ino: In function 'void loop()':
mid:98: error: invalid conversion from 'int*' to 'unsigned int'
mid:98: error: initializing argument 2 of 'void tone(uint8_t, unsigned int, long unsigned int)'
mid:99: error: invalid operands of types 'int' and 'float [98]' to binary 'operator*'
什么原因啊,新手望指教
回复 支持 反对

使用道具 举报

发表于 2013-1-25 10:59:29 | 显示全部楼层
高人呀,让我这个对乐理一窍不通的长见识了,
回复 支持 反对

使用道具 举报

发表于 2013-1-25 11:16:03 | 显示全部楼层
不错,有点意思。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2020-9-29 09:34 , Processed in 0.048981 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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