Я предполагаю, что вы хотите воспроизвести мелодию, пока кнопка нажата, и остановить, если кнопка отпущена.
Тогда это будет что-то вроде:
int i = 0;
void loop()
{
if(digitalRead(buttonPin) == HIGH)
{
tone(8, mariomelody[i], 70);
i = (i + 1) % sizeof(mariomelody);
delay();
}
}
Чтобы не сбрасывать позицию в начало мелодии, вам нужно i
быть глобальной переменной.
Если вы хотите, чтобы кнопка включала и выключала мелодию, вам понадобится другая глобальная переменная playing
:
bool playing = false;
void loop()
{
if(digitalRead(buttonPin) == HIGH)
{
playing = !playing;
while (digitalRead(buttonPin) == HIGH)
; //wait for release
}
if (playing) {
//the rest is the same
}
}