tom 发表于 2013-3-9 22:02:30

[翻译]]Arduino自带范例Digital之toneMelody

[翻译]]Arduino自带范例Digital之toneMelody
电路图

原理图



/*
作者:tom
时间:2013年03月08日
IDE版本号:1.01
发表地址:www.geek-workshop.com
作用:让扬声器发一段声音

*/

/*
    歌曲(旋律)

播放一段旋律

电路:
* 8 欧姆的扬声器接在数字端口 8
created 21 Jan 2010
modified 30 Aug 2011
by Tom Igoe

这个范例代码在公共范围(不受版权制约)


http://arduino.cc/en/Tutorial/Tone

*/
#include "pitches.h"

//注释旋律中的(音阶)
int melody[] = {
NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

int noteDurations[] = {
4, 8, 8, 4,4,4,4,4 };
//例如:注解 (节拍) 4 = quarter note, 8 = eighth note

void setup() {
   //反复申明这段旋律
for (int thisNote = 0; thisNote < 8; thisNote++) {
//计算音节的时间,取一秒钟的时间以内作为基准
//除以节拍的的类型

//例如 四分音符=1000/4 八分音符=1000/8
      int noteDuration = 1000/noteDurations;
    tone(8, melody,noteDuration);

//为了区分音符,设置一个最小时间在它们之间
//(旋律的)节拍+30% 似乎工作的很好

    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
      //停止播放旋律
    noTone(8);
}
}

void loop() {
//不再需要播放这个旋律
}

yyc11235813 发表于 2013-3-10 07:38:45

kankan`````````````````````````

lmb312 发表于 2013-7-2 21:33:13

音符那里什么意思没看懂int melody[] = {
NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

int noteDurations[] = {
4, 8, 8, 4,4,4,4,4 };

tom 发表于 2013-7-2 21:39:23

lmb312 发表于 2013-7-2 21:33 static/image/common/back.gif
音符那里什么意思没看懂int melody[] = {
NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOT ...

NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3
这些是音阶

节拍

int noteDurations[] = {
4, 8, 8, 4,4,4,4,4 };
这些是对应的节拍,即音阶的延续的时间

lmb312 发表于 2013-7-2 22:02:17

比如说我要编另外的歌曲那我怎么改?我都看不懂
页: [1]
查看完整版本: [翻译]]Arduino自带范例Digital之toneMelody