Arduino Uno压电扬声器循环,而不是一次播放(编程新手)

Arduino Uno压电扬声器循环,而不是一次播放(编程新手),arduino,arduino-uno,speaker,Arduino,Arduino Uno,Speaker,我有一个项目在一天内到期,我不希望这个问题得到回答,虽然这是一个非常简单的问题。我在以下网站上使用了一个代码: 这是一个简单的代码,通过压电扬声器播放歌曲“我们是第一”,但它循环的歌曲,我需要没有循环。我尝试过各种策略(请记住,这对我来说是新的)来停止循环,但每次都会出错 代码如下: const int fn=400; 常数int hn=200; 常数int qn=100; 常数int f5=698; 常数int c6=1047; 常数int b5=988; 常数int gh5=831; 常数i

我有一个项目在一天内到期,我不希望这个问题得到回答,虽然这是一个非常简单的问题。我在以下网站上使用了一个代码: 这是一个简单的代码,通过压电扬声器播放歌曲“我们是第一”,但它循环的歌曲,我需要没有循环。我尝试过各种策略(请记住,这对我来说是新的)来停止循环,但每次都会出错

代码如下:

const int fn=400;
常数int hn=200;
常数int qn=100;
常数int f5=698;
常数int c6=1047;
常数int b5=988;
常数int gh5=831;
常数int ch6=1109;
常数int dh6=1245;
int song[]={
f5,fn+hn,
c6,hn,
b5,qn,
c6,qn,
b5,qn,
c6,qn,
b5,hn,
c6,hn,
gh5,fn,
f5,fn+hn,
f5,hn,
gh5,hn,
c6,hn,
ch6,fn,
gh5,fn,
ch6,fn,
dh6,fn,
c6,hn,
ch6,hn,
c6,hn,
ch6,hn,
c6,fn
};
无效设置(){
Serial.begin(9600);
}
void循环(){
对于(int i=0;i<(sizeof(song)/sizeof(int));i=i+2){
音调(8,歌曲[i]);
延迟(宋[i+1]);
}
诺通(8);
延迟(1000);
}
我知道问题是,如果我想让它停止,void循环中不应该有代码,但是如果没有持续的令人沮丧的错误,我就无法修复它


任何快速帮助都是救命稻草。

首先,最好在单独的函数中隔离播放歌曲的代码:

void PlaySong()
{
对于(int i=0;i<(sizeof(song)/sizeof(int));i=i+2){
音调(8,歌曲[i]);
延迟(宋[i+1]);
}
}
要在启动时只播放一次歌曲,请从
setup()
调用它:

void setup(){
Serial.begin(9600);//不确定是否需要这个
播放歌曲();
}

要在按下按钮或输入改变时播放歌曲,您可以在
循环()中进行测试,如果按下按钮,则从那里调用函数一次。

首先,最好将播放歌曲的代码隔离在单独的函数中:

void PlaySong()
{
对于(int i=0;i<(sizeof(song)/sizeof(int));i=i+2){
音调(8,歌曲[i]);
延迟(宋[i+1]);
}
}
要在启动时只播放一次歌曲,请从
setup()
调用它:

void setup(){
Serial.begin(9600);//不确定是否需要这个
播放歌曲();
}
要在按下按钮或输入改变时播放歌曲,您可以在
loop()
中进行测试,如果按下,则从那里调用函数一次