Код предназначен для следующего: когда вы нажимаете, он продолжает воспроизводить ноту [0], пока вы не перестанете оказывать на нее давление.Затем, когда вы в следующий раз нажмете на него, будет воспроизводиться нота [1], пока вы не перестанете нажимать на нее.Следующее нажатие воспроизводит ноту [2] до тех пор, пока вы не перестанете нажимать на нее и так далее.(note [] = mariomelody [])
Кто-нибудь знает, почему он может работать неправильно?
Я получаю разные заметки каждый раз, когда кладу, нажимаю, но япришел к выводу, что он продолжает пропускать заметки.
Мой код:
int buttonPin = 12;
int buzzerPin = 8;
int ledPin = 7;
int pressurePin = A0;
void setup()
{
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
// put your main code here, to run repeatedly:
for (int i = 0; i < sizeof(mariomelody) / sizeof(mariomelody[0]); i++)
{
while (analogRead(pressurePin) < 200)
{
digitalWrite(ledPin, LOW);
}
while (analogRead(pressurePin) > 250)
{
digitalWrite(ledPin, HIGH);
tone(buzzerPin, mariomelody[i], 20);
}
}
mariomelody
- это просто массив целых чисел для частот, которые производят правильный звук.Массив на 110% не проблема ...
РЕДАКТИРОВАТЬ:
Дополнительный контекст: Я нажимаю его.Он издает звук, и я вроде держу его, чтобы светодиоды все еще горели, но звук прекращается.Когда я снова нажимаю на нее немного сильнее, она играет другую ноту, но светодиоды все время горели.