Arduino压力传感器在旋律C 中跳过音符
arduino pressure sensor skips notes in melody C++
代码要做的是:当您按下时,它会一直播放音符[0],直到停止对其施加压力为止。比下一次按下它,它会播放注释[1],直到您停止向其施压为止。接下来,按下它会播放注意[2],直到您停止向其施压,依此类推。(注意[] = 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%不是问题...
编辑:
额外的上下文:我按了。它发出声音,我有点握住它,因此LED仍然点燃,但声音停止了。当我再次压力一点时,它会播放不同的音符,但是LED一直点燃。
当alagread()()返回200到250的东西而无需播放音符时,您会增加计数器。要解决此问题,请在两个呼叫上使用相同的阈值(即检查> 200 and&lt; = 200,而不是> 200 and&lt; 250)。
另一个可能的问题是您的压力传感器正在弹跳。您可以将Analogread()纳入下面的功能,以防止这种情况:
void read_dbnc_low(int pin)
{
while (1) {
if (analogRead(pin) < 200) {
delay(1); // 1ms
if (analogRead(pin) < 200) {
delay(1); // 1ms
if (analogRead(pin) < 200) {
return;
}
}
}
}
}
void read_dbnc_high(int pin)
{
while (1) {
if (analogRead(pin) >= 200) {
delay(1); // 1ms
if (analogRead(pin) >= 200) {
delay(1); // 1ms
if (analogRead(pin) >= 200) {
return;
}
}
}
}
}
并修改您的前面:
for (int i = 0; i < sizeof(mariomelody) / sizeof(mariomelody[0]); i++)
{
read_dbnc_low(pressurePin);
digitalWrite(ledPin, LOW);
read_dbnc_high(pressurePin);
digitalWrite(ledPin, HIGH);
tone(buzzerPin, mariomelody[i], 20);
}
相关文章:
- 编写一个程序,帮助Tudio将MIDI音符转换为名称和八度音阶
- C++ 转换音符中的 MIDI 音符 ID
- 插入多音符:在该值的第一次发生之前,而不是在上次发生之后
- Arduino压力传感器在旋律C 中跳过音符
- 每次我将(播放旋律 - )代码上传到Arduino时,我按下按钮时,它会在数组中跳过相同的音符.怎么会
- 来自 Base64 的 QT 变音符号字符
- 德语变音符号和正则表达式
- InternetCanonicalizeUrl无法解码变音符号字母
- QT4 获取不带变音符号的基本字符
- 谓词和元音符有什么区别?
- QAbstractTableModel和Unicode(德语元音变音符)
- 合成歌曲时音符之间的准确延迟
- 如何在给定的 MIDI 音符/八度音阶下播放声音
- 检测所有音符头,无论是全音符还是半音符
- 确定MIDI音符长度
- 在juce音频应用程序中打印midi音符编号
- 正在将动态数组元素解析为参数?(变音符)
- 音符持续时间