我有一系列的旋律。如果我按下按钮,它将播放整首歌曲,但是如果我在delay之后放了一点,则它会重置i。我如何才能使它仅在再次按下按钮后才能继续? (对此,我仍然是一个新手,在此先谢谢您)

int buttonPin = 12;

void setup()
{
 // put your setup code here, to run once:

   pinMode(buttonPin, INPUT);
}


void loop()
{
 // put your main code here, to run repeatedly:

  int buttonState = digitalRead(buttonPin);

  for(int i = 0; i < sizeof(mariomelody); i++)
  {
    if(buttonState == HIGH)
    {
      tone(8, mariomelody[i], 70);
      delay();
    }
  }
}

最佳答案

在仍然按住按钮的同时停止循环:

int buttonPin = 12;

void setup()
{
 // put your setup code here, to run once:

   pinMode(buttonPin, INPUT);
}


void loop()
{
 // put your main code here, to run repeatedly:

  int buttonState = digitalRead(buttonPin);

  for(int i = 0; i < sizeof(mariomelody); i++)
  {
    if(buttonState == HIGH)
    {
      tone(8, mariomelody[i], 70);
      delay();
    }
    while(digitalRead(buttonPin) == HIGH)
    {
    // wait until the button is released
    }
    while(digitalRead(buttonPin) == LOW)
    {
    //wait until the button is pressed again
    }
  }
}

09-07 01:43