树莓派蜂鸣器唱歌c语言,【求教】蜂鸣器唱歌

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

送一首歌,张雨生的《大海》。

#define NOTE_D0 -1

#define NOTE_D1 294

#define NOTE_D2 330

#define NOTE_D3 373

#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.125

#define SIXTEENTH 0.0625

int tune[] =

{

NOTE_D1, NOTE_D2, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4,

NOTE_D2, NOTE_D1, NOTE_D4, NOTE_D4, NOTE_D5, NOTE_D4,

NOTE_D2, NOTE_D4, NOTE_D5, NOTE_D5, NOTE_D4, NOTE_D5,

NOTE_D4, NOTE_D2, NOTE_D5, NOTE_D5, NOTE_D6, NOTE_D5,

NOTE_D6, NOTE_DH1, NOTE_DH2,NOTE_DH2, NOTE_DH1, NOTE_DH2,

NOTE_DH1, NOTE_D6, NOTE_D5, NOTE_D6, NOTE_D5, NOTE_D4,NOTE_D2,

NOTE_D1, NOTE_D2, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D5, NOTE_D4, NOTE_D0,

NOTE_D1, NOTE_D2, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4,

NOTE_D2, NOTE_D1, NOTE_D4, NOTE_D4, NOTE_D5, NOTE_D4,

NOTE_D2, NOTE_D4, NOTE_D5, NOTE_D5, NOTE_D4, NOTE_D5,

NOTE_D4, NOTE_D2, NOTE_D5, NOTE_D5, NOTE_D6, NOTE_D5,

NOTE_D6, NOTE_DH1, NOTE_DH2, NOTE_DH2, NOTE_DH1, NOTE_DH2,

NOTE_DH1, NOTE_D6, NOTE_D5, NOTE_D6, NOTE_D5, NOTE_D4, NOTE_D2,

NOTE_D1, NOTE_D2, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D4, NOTE_D5, NOTE_D4

};

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

float duration[] =

{

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 1, 1, 1, 2,

1, 1, 1, 2, 1, 2, 2, 3, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 2, 1, 2,

1, 1, 1, 1, 1, 1, 2,

1, 1, 1, 2, 1, 2, 2, 4,

};

int length;//这里定义一个变量,后面用来表示共有多少个音符

int tonePin = 10; //蜂鸣器的pin

void setup()

{

pinMode(tonePin, OUTPUT); //设置蜂鸣器的pin为输出模式

length = sizeof(tune) / sizeof(tune[0]); //这里用了一个sizeof函数,

//可以查出tone序列里有多少个音符

}

void loop()

{

for (int x = 0; x < length; x++) //循环音符的次数

{

tone(tonePin, tune[x]); //此函数依次播放tune序列里的数组,即每个音符

delay(400 * duration[x]); //每个音符持续的时间,即节拍duration,

//400是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧

noTone(tonePin);//停止当前音符,进入下一音符

}

delay(5000);//等待5秒后,循环重新开始

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值