Arduino Uno 蜂鸣器播放《天空之城》
生活随笔
收集整理的這篇文章主要介紹了
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 蜂鸣器播放《天空之城》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Arduino 声音传感器例程
- 下一篇: 基于管道过滤器实现的kwic实现