课程表

Arduino 基础

Arduino 函数库

Arduino 进阶

Arduino 项目

Arduino 传感器

Arduino 电机控制

Arduino 声音

工具箱
速查手册

Arduino 音色库

当前位置:免费教程 » 程序设计 » Arduino

在本章中,我们将使用Arduino音色库。 它只是一个Arduino库,它在任何Arduino引脚上产生指定频率(和50%占空比)的方波。 可以可选地指定持续时间,否则波继续,直到调用stop()函数。 该针可以连接到压电蜂鸣器或扬声器播放铃声。

警告 - 不要将引脚直接连接到任何音频输入。 电压远远高于标准线路电平电压,并可能损坏声卡输入等。您可以使用分压器降低电压。

 

必需的组件

您将需要以下组件 -

  • 1 × 8欧姆扬声器
  • 1 × 1k电阻
  • 1 × Arduino UNO 板
 

程序

按照电路图进行连接,如下图所示。

电路图

草图

在计算机上打开Arduino IDE软件。 在Arduino语言编码将控制你的电路。 通过单击新建打开一个新的草图文件。

Sketch

要制作pitches.h文件,请单击串行监视器图标正下方的按钮,然后选择“新建标签页",或使用Ctrl + Shift + N。

制作pitches.h文件

 

然后粘贴以下代码 -

  1. /*************************************************
  2. * Public Constants
  3. *************************************************/
  4.  
  5. #define NOTE_B0 31
  6. #define NOTE_C1 33
  7. #define NOTE_CS1 35
  8. #define NOTE_D1 37
  9. #define NOTE_DS1 39
  10. #define NOTE_E1 41
  11. #define NOTE_F1 44
  12. #define NOTE_FS1 46
  13. #define NOTE_G1 49
  14. #define NOTE_GS1 52
  15. #define NOTE_A1 55
  16. #define NOTE_AS1 58
  17. #define NOTE_B1 62
  18. #define NOTE_C2 65
  19. #define NOTE_CS2 69
  20. #define NOTE_D2 73
  21. #define NOTE_DS2 78
  22. #define NOTE_E2 82
  23. #define NOTE_F2 87
  24. #define NOTE_FS2 93
  25. #define NOTE_G2 98
  26. #define NOTE_GS2 104
  27. #define NOTE_A2 110
  28. #define NOTE_AS2 117
  29. #define NOTE_B2 123
  30. #define NOTE_C3 131
  31. #define NOTE_CS3 139
  32. #define NOTE_D3 147
  33. #define NOTE_DS3 156
  34. #define NOTE_E3 165
  35. #define NOTE_F3 175
  36. #define NOTE_FS3 185
  37. #define NOTE_G3 196
  38. #define NOTE_GS3 208
  39. #define NOTE_A3 220
  40. #define NOTE_AS3 233
  41. #define NOTE_B3 247
  42. #define NOTE_C4 262
  43. #define NOTE_CS4 277
  44. #define NOTE_D4 294
  45. #define NOTE_DS4 311
  46. #define NOTE_E4 330
  47. #define NOTE_F4 349
  48. #define NOTE_FS4 370
  49. #define NOTE_G4 392
  50. #define NOTE_GS4 415
  51. #define NOTE_A4 440
  52. #define NOTE_AS4 466
  53. #define NOTE_B4 494
  54. #define NOTE_C5 523
  55. #define NOTE_CS5 554
  56. #define NOTE_D5 587
  57. #define NOTE_DS5 622
  58. #define NOTE_E5 659
  59. #define NOTE_F5 698
  60. #define NOTE_FS5 740
  61. #define NOTE_G5 784
  62. #define NOTE_GS5 831
  63. #define NOTE_A5 880
  64. #define NOTE_AS5 932
  65. #define NOTE_B5 988
  66. #define NOTE_C6 1047
  67. #define NOTE_CS6 1109
  68. #define NOTE_D6 1175
  69. #define NOTE_DS6 1245
  70. #define NOTE_E6 1319
  71. #define NOTE_F6 1397
  72. #define NOTE_FS6 1480
  73. #define NOTE_G6 1568
  74. #define NOTE_GS6 1661
  75. #define NOTE_A6 1760
  76. #define NOTE_AS6 1865
  77. #define NOTE_B6 1976
  78. #define NOTE_C7 2093
  79. #define NOTE_CS7 2217
  80. #define NOTE_D7 2349
  81. #define NOTE_DS7 2489
  82. #define NOTE_E7 2637
  83. #define NOTE_F7 2794
  84. #define NOTE_FS7 2960
  85. #define NOTE_G7 3136
  86. #define NOTE_GS7 3322
  87. #define NOTE_A7 3520
  88. #define NOTE_AS7 3729
  89. #define NOTE_B7 3951
  90. #define NOTE_C8 4186
  91. #define NOTE_CS8 4435
  92. #define NOTE_D8 4699
  93. #define NOTE_DS8 4978

将上面给出的代码保存为 pitches.h

 

Arduino代码

  1. #include "pitches.h"
  2. // notes in the melody:
  3. int melody[] = {
  4. NOTE_C4, NOTE_G3,NOTE_G3, NOTE_GS3, NOTE_G3,0, NOTE_B3, NOTE_C4};
  5. // note durations: 4 = quarter note, 8 = eighth note, etc.:
  6.  
  7. int noteDurations[] = {
  8. 4, 8, 8, 4,4,4,4,4
  9. };
  10.  
  11. void setup() {
  12. // iterate over the notes of the melody:
  13. for (int thisNote = 0; thisNote < 8; thisNote++) {
  14. // to calculate the note duration, take one second
  15. // divided by the note type.
  16. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
  17. int noteDuration = 1000/noteDurations[thisNote];
  18. tone(8, melody[thisNote],noteDuration);
  19. //pause for the note's duration plus 30 ms:
  20. delay(noteDuration +30);
  21. }
  22. }
  23.  
  24. void loop() {
  25. // no need to repeat the melody.
  26. }

 

代码说明

代码使用一个额外的文件,pitches.h。 此文件包含典型音符的所有音高值。 例如,NOTE_C4是中间C. NOTE_FS4是F sharp,等等。 这个注释表最初是由Brett Hagman编写的,tone()命令的基础是它的工作。 你当你想制作音符时可能会发现它有用。

 

结果

你会听到保存在pitches.h中的音符。 文件。

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号