如果信号仍然有效,如何停止循环

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;
    }