如果信号仍然有效,如何停止循环
How stop a loop, if the signal is still active
我有两个带接线的输入,第一个,检测门打开,并播放声音 1,当门关闭时,这个声音关闭。
第二个声音,是打开发动机汽车时的欢迎声音,但我对第二个声音有问题,因为它一直循环播放欢迎声音,因为发动机已打开。
我每次启动引擎都需要播放欢迎音,但是只有一次,输入信号永远不会切断,因为引擎是打开的,只有在引擎关闭时才会切断。
代码:
# define ACTIVATED LOW
int btndoor = 7;
int btnwelcome = 6;
void setup()
{
pinMode(btndoor, INPUT);
digitalWrite(btnpuerta,HIGH);
pinMode(btnwelcome, INPUT);
digitalWrite(btnwelcome,HIGH);
}
void loop(){
if (digitalRead(btndoor) == ACTIVATED) {
myDFPlayer.play(1);
delay(2500);
}
if (digitalRead(btnwelcome) == ACTIVATED) {
myDFPlayer.play (5);
delay (2000);
myDFPlayer.stop ();
}
}
如何停止循环?
你可以使用标志作为
if engine is on
if flag == false
play the sound
flag = true
但不要忘记在关闭引擎时将其设置为假
turn engine off
flag = false
if (digitalRead(btnpuerta) == ACTIVATED) {
myDFPlayer.play(1);
delay(2500);
}
if (digitalRead(btnwelcome) == ACTIVATED) {
if (doneFlag == false) // fragmento para repetir el comando una sola vez
{
myDFPlayer.play (5);
delay (2000);
myDFPlayer.stop ();
doneFlag = true;
}
}else{
doneFlag = false;
}
我有两个带接线的输入,第一个,检测门打开,并播放声音 1,当门关闭时,这个声音关闭。
第二个声音,是打开发动机汽车时的欢迎声音,但我对第二个声音有问题,因为它一直循环播放欢迎声音,因为发动机已打开。
我每次启动引擎都需要播放欢迎音,但是只有一次,输入信号永远不会切断,因为引擎是打开的,只有在引擎关闭时才会切断。
代码:
# define ACTIVATED LOW
int btndoor = 7;
int btnwelcome = 6;
void setup()
{
pinMode(btndoor, INPUT);
digitalWrite(btnpuerta,HIGH);
pinMode(btnwelcome, INPUT);
digitalWrite(btnwelcome,HIGH);
}
void loop(){
if (digitalRead(btndoor) == ACTIVATED) {
myDFPlayer.play(1);
delay(2500);
}
if (digitalRead(btnwelcome) == ACTIVATED) {
myDFPlayer.play (5);
delay (2000);
myDFPlayer.stop ();
}
}
如何停止循环?
你可以使用标志作为
if engine is on
if flag == false
play the sound
flag = true
但不要忘记在关闭引擎时将其设置为假
turn engine off
flag = false
if (digitalRead(btnpuerta) == ACTIVATED) {
myDFPlayer.play(1);
delay(2500);
}
if (digitalRead(btnwelcome) == ACTIVATED) {
if (doneFlag == false) // fragmento para repetir el comando una sola vez
{
myDFPlayer.play (5);
delay (2000);
myDFPlayer.stop ();
doneFlag = true;
}
}else{
doneFlag = false;
}