欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Arduino Uno 蜂鸣器播放《天空之城》

发布时间:2024/3/12 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Arduino Uno 蜂鸣器播放《天空之城》 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

话不多说,直接上码:

/* Author: Waao666* Created on 2020-1-7 * Version 1.0 */ /* 以上部分是定义是把每个音符和频率值对应起来 */ #define NOTE_D0 -1 #define NOTE_D1 294 #define NOTE_D2 330 #define NOTE_D3 350 #define NOTE_D4 393 #define NOTE_D5 441 #define NOTE_D6 495 #define NOTE_D7 556 #define NOTE_DL1 147 #define NOTE_DL2 165 #define NOTE_DL3 175 #define NOTE_DL4 196 #define NOTE_DL5 221 #define NOTE_DL6 248 #define NOTE_DL7 278 #define NOTE_DH1 589 #define NOTE_DH2 661 #define NOTE_DH3 700 #define NOTE_DH4 786 #define NOTE_DH5 882 #define NOTE_DH6 990 #define NOTE_DH7 112 /**************************************//********** 这部分是用英文对应了拍子 **********/ #define WHOLE 1 #define HALF 0.5 #define QUARTER 0.25 #define EIGHTH 0.25 #define SIXTEENTH 0.625 /******************************************//* 这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数 */ int tune[] = { NOTE_D0,NOTE_D0,NOTE_D0,NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D3,NOTE_D3,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D3,NOTE_D4,NOTE_D3,NOTE_D4,NOTE_DH1,NOTE_D3,NOTE_D3,NOTE_D0,NOTE_DH1,NOTE_DH1,NOTE_DH1,NOTE_D7,NOTE_D4,NOTE_D4,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D0,NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_D7,NOTE_D7,NOTE_D7,NOTE_D3,NOTE_D3,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_D2,NOTE_D3,NOTE_D4,NOTE_DH1,NOTE_D7,NOTE_D7,NOTE_DH1,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_DH3,NOTE_DH1,NOTE_DH1,NOTE_DH1,NOTE_DH1,NOTE_D7,NOTE_D6,NOTE_D6,NOTE_D7,NOTE_D5,NOTE_D6,NOTE_D6,NOTE_D6,NOTE_DH1,NOTE_DH2,NOTE_DH3,NOTE_DH2,NOTE_DH3,NOTE_DH5,NOTE_DH2,NOTE_DH2,NOTE_DH2,NOTE_D5,NOTE_D5,NOTE_DH1,NOTE_D7,NOTE_DH1,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_D6,NOTE_D7,NOTE_DH1,NOTE_D7,NOTE_DH2,NOTE_DH2,NOTE_DH1,NOTE_D5,NOTE_D5,NOTE_D5,NOTE_DH4,NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH6,NOTE_DH6,NOTE_DH5,NOTE_DH5,NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH1,NOTE_D0,NOTE_DH1,NOTE_DH2,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_DH5,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH3,NOTE_DH6,NOTE_DH6,NOTE_DH5,NOTE_DH5,NOTE_DH3,NOTE_DH2,NOTE_DH1,NOTE_DH1,NOTE_D0,NOTE_DH1,NOTE_DH2,NOTE_DH1,NOTE_DH2,NOTE_DH2,NOTE_D7,NOTE_D6,NOTE_D6,NOTE_D6,NOTE_D6,NOTE_D7 }; /****************************************************//* 这部分是整首曲子的接拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的) */ float duration[]= { 1,1,1,0.5,0.5, 1+0.5,0.5,1,1, 1,1,1,0.5,0.5,1+0.5,0.5,1,1, 1,1,1,1, 1+0.5,0.5,1,1, 1,1,0.5,0.5,0.5,0.5, 1+0.5,0.5,1,1, 1,1,1,0.5,0.5,1+0.5,0.5,1,1, 1,1,1,0.5,0.5, 1+0.5,0.5,1,1,1,1,1,0.5,0.5, 1,0.5,0.25,0.25,0.25,0.5, 0.5,0.5,0.5,0.25,0.5,1,0.5,0.5,0.5,0.5,1,1, 1,1,1,0.5,0.5, 1+0.5,0.5,1,1,1,1,1,0.5,0.5, 1.5,0.5,1,1, 1,1,1,1,0.5,0.5,1,1,0.5,0.5, 1.5,0.25,0.5,1, 1,1,1,1,1,1,1,1, 1,1,1,1, 0.5,0.5,1,1,0.5,0.5,1,0.5,0.5,1,1, 1,1,1,1, 1,1,1,1,0.5,0.5,1,1,0.5,0.5, 1,0.5,0.25,0.5,1, 1,1,1,0.5,0.5 }; /**********************************************************************************/int length; /* 这里定义一个变量,后面用来表示共有多少个音符 */ int tonePin=12; /* 蜂鸣器的pin */void setup() {/* 设置蜂鸣器的pin为输出模式 */pinMode(tonePin,OUTPUT);/* 这里用了一个sizeof函数, 可以查出tone序列里有多少个音符 */length = sizeof(tune)/sizeof(tune[0]); } void loop() {/* 循环音符的次数 */for(int x=0;x<length;x++) {/* 此函数依次播放tune序列里的数组,即每个音符 */ tone(tonePin,tune[x]);/* 每个音符持续的时间,即节拍duration,是调整时间的越大,曲子速度越慢 */delay(400*duration[x]);/* 停止当前音符,进入下一音符 */noTone(tonePin);}/* 等待5秒后,循环重新开始 */delay(5000); }

总结

以上是生活随笔为你收集整理的Arduino Uno 蜂鸣器播放《天空之城》的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。