【问题标题】:Arduino audio playback without SD card not working? [closed]没有 SD 卡的 Arduino 音频播放不工作? [关闭]
【发布时间】:2021-12-29 04:35:26
【问题描述】:

我想创建一个主要播放 2 种音频的电路,一种在通电时播放,另一种通过按下按钮播放。我想在没有 SD 卡的情况下创建它。使用的库是 PCM。 这是代码示例。

#include <PCM.h>

const unsigned char sample[] PROGMEM = {
  0,6,14,22,30,38,46,54,60,68,74,82,90,98,106,114,112,
  };

void setup()
{
    startPlayback(sample, sizeof(sample));
}

void loop()
{
 
}

如果有人知道如何使用按钮在 arduino 中播放音频(没有 sd 卡) 帮帮我……

【问题讨论】:

标签: if-statement arduino arduino-uno arduino-ide arduino-nano


【解决方案1】:
const unsigned char sample2[] PROGMEM = {
    100,96,84,72,60,58,46,34,20,18,4,12,20,38,46,54,62,
};

int inPin = 7;
void setup()
{
    pinMode(inPin, INPUT_PULLUP);
}

int lastPin = HIGH;  // HIGH means not pressed for Pullup Inputs
void loop()
{
    int pin = digitalRead(inPin);

    if (pin == lastPin)
        return;

    if (pin == HIGH) {
       startPlayback(sample1, sizeof(sample1));
    } else {
       startPlayback(sample2, sizeof(sample2));
    }

    lastPin = pin;
}

【讨论】:

  • 您必须触发引脚状态从 LOW 变为 HIGH(或相反)并对其进行去抖动(或等待一段时间让声音结束)
  • 尝试了@mmixLinus 的答案,它没有同时播放。但是当我将digitalRead 更改为analogRead 并更改引脚时,它们都可以工作。但现在的问题是第二个声音(按下开关时播放)正在连续播放。直到释放开关才停止。
  • 修改了代码以使按钮输入上拉(所以digitalRead 应该可以工作)并处理播放两个样本。按下按钮开始播放1,松开按钮开始播放2。
  • 谢谢@mmixLinus 和@datafiddler 早些时候我忘记添加INPUT_PULLUP,现在可以使用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多