该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大是想做一个,能按键控制蜂鸣器发出音乐
可是按键按下后 必须唱完那首歌才停止,不能实现再按一次,就能随时让他停
研究了半天,我的菜鸟水平知识量真的是做不到TTTTTATTTTT。老师教了按键控制的代码,但蜂鸣器的音乐不能用 buzzer=HIGH 这样控制TAT,不知道怎样放到if的条件里…………
跪求大佬的帮助!!!(重点部分已加粗)
因为是个设计作业,但水平有限,实际还想做到音游节奏大师的效果,就……能if触摸板+音节同时实现就success…………如果有大佬能指导,可有偿TAAAAAAAT!!!!
现在找到的代码是根据网上大神的蜂鸣器播放教程稍微修改的(如下)
#define NTD0 -1
#define NTD1 294
#define NTD2 330
#define NTD3 350
#define NTD4 393
#define NTD5 441
#define NTD6 495
#define NTD7 556
#define NTDL1 147
#define NTDL2 165
#define NTDL3 175
#define NTDL4 196
#define NTDL5 221
#define NTDL6 248
#define NTDL7 278
#define NTDH1 589
#define NTDH2 661
#define NTDH3 700
#define NTDH4 786
#define NTDH5 882
#define NTDH6 990
#define NTDH7 112
//c pinlv
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
int tune[]=
{
NTD3,NTD3,NTD4,NTD5,
NTD5,NTD4,NTD3,NTD2,
NTD1,NTD1,NTD2,NTD3,
NTD3,NTD2,NTD2,
NTD3,NTD3,NTD4,NTD5,
NTD5,NTD4,NTD3,NTD2,
NTD1,NTD1,NTD2,NTD3,
NTD2,NTD1,NTD1,
NTD2,NTD2,NTD3,NTD1,
NTD2,NTD3,NTD4,NTD3,NTD1,
NTD2,NTD3,NTD4,NTD3,NTD2,
NTD1,NTD2,NTDL5,NTD0,
NTD3,NTD3,NTD4,NTD5,
NTD5,NTD4,NTD3,NTD4,NTD2,
NTD1,NTD1,NTD2,NTD3,
NTD2,NTD1,NTD1
};
float durt[]=
{
1,1,1,1,
1,1,1,1,
1,1,1,1,
1+0.5,0.5,1+1,
1,1,1,1,
1,1,1,1,
1,1,1,1,
1+0.5,0.5,1+1,
1,1,1,1,
1,0.5,0.5,1,1,
1,0.5,0.5,1,1,
1,1,1,1,
1,1,1,1,
1,1,1,0.5,0.5,
1,1,1,1,
1+0.5,0.5,1+1,
};
int length;
int buzzer=7;
int button=6;
int led=3;
void setup()
{
pinMode(buzzer,OUTPUT);
pinMode(led,OUTPUT);
length=sizeof(tune)/sizeof(tune[0]);
}
void loop()
int buttonState=digitalRead(button);
if (buttonState == HIGH) {
{
for(int x=0;x
{
tone(buzzer,tune[x]);
delay(400*durt[x]);
noTone(buzzer);
}
delay(2000);
}