gpt4 book ai didi

c++ - 每次我将我的(播放旋律)代码上传到 arduino 并按下按钮时,它都会跳过数组中的相同音符。怎么会?

转载 作者:行者123 更新时间:2023-11-30 04:51:48 26 4
gpt4 key购买 nike

我编写了一个代码,每当我按下按钮时,它就会播放歌曲中的下一个音符。但问题是,出于某种原因,它一直在跳过数组中的相同音符。

例如(我的代码):

int mariomelody[] = {
NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_C5, NOTE_E5, NOTE_G5, NOTE_G4,
//THERE ARE TWO 'NOTE_E5's BECAUSE THE THIRD NOTE DOESNT PLAY
NOTE_C5, NOTE_G4, NOTE_E4, NOTE_A4, NOTE_B5, NOTE_AS4, NOTE_A4,
NOTE_G4, NOTE_E5, NOTE_G5, NOTE_A5, NOTE_F5, NOTE_G5, NOTE_E5,
NOTE_C5, NOTE_D5, NOTE_B4,


//buttonPin sits at DIG. 12
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:

for (int i = 0; i < sizeof(mariomelody) / sizeof(mariomelody[0]); i++)
{
while (digitalRead(buttonPin) == HIGH)
{
tone(8, mariomelody[i], 20);
}
while (digitalRead(buttonPin) == LOW)
{
}
}

每个人都知道马里奥的旋律。前三个音符在不同速度下相同(4 是 8 速度的一半); E(4) E(4) E(8)。出于某种原因,它只是跳过了第三个 NOTE_E5,所以我只是把另一个 NOTE_E5 放在那里,现在它工作得“很好”。

有人知道为什么它会跳过注释吗?是我的代码吗?

最佳答案

我不知道马里奥的旋律,但无论如何我认为你的代码是错误的:

试试这个:

void loop()
{
for (int i = 0; i < sizeof(mariomelody) / sizeof(mariomelody[0]); i++)
{
while (digitalRead(buttonPin) == LOW)
{
// wait until button is pressed
}

tone(8, mariomelody[i], 20);

while (digitalRead(buttonPin) == HIGH)
{
// wait until button is released
}
}
}

关于c++ - 每次我将我的(播放旋律)代码上传到 arduino 并按下按钮时,它都会跳过数组中的相同音符。怎么会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54706042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com