【问题标题】:How do I make the volume louder from this code in proccessing?如何在处理过程中通过此代码使音量变大?
【发布时间】:2012-02-28 06:32:28
【问题描述】:

我有从 arduino 播放一点声音的代码。这首歌是根据数值编码的。但是如何让它在 arduino 上播放得更响亮呢?

#include <PCM.h>

int switchPin = 8;

const unsigned char sample[] PROGMEM = {
  140, 124, 130, 126, 129, 126, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 127, 128, 128, 128, 128, 
};

void setup()
{
  pinMode(switchPin, INPUT);
}

void loop()
{
  if(digitalRead(switchPin) == HIGH)
  {
    startPlayback(sample, sizeof(sample));
  }
}

【问题讨论】:

  • 您有机会尝试我回答中的建议吗?

标签: c arduino volume speaker


【解决方案1】:

如果您阅读 pcm.h 中的 cmets,您会看到它说音量会非常低。 PCM 技术调整引脚为高电平的时间百分比。我同意 jdh 的建议,即无论如何音量都会受到限制,并且放大器会有所帮助。对于软件中声音更大的东西,我认为您需要更多具有可调节频率的方波,以便引脚的高频率和低频率一样,并且实际频率可以调整。我没用过,看看 arduino Tone() 库。

【讨论】:

    【解决方案2】:

    音频信号本质上是有符号量。如果您的库使用unsigned char 处理音频数据,那么它可能映射了 0 -> -128 和 255 -> 127。所以让我们看看您的信号。

    前 6 个样本:

    140, 124, 130, 126, 129, 126
    

    在 127 附近有轻微的振荡。然后是其余的信号

    128, 127, 128, 127, ...
    

    或多或少是 DC。这将是听不见的。

    尝试输入 {0, 255, 0, 255, ...} 的信号,它应该响亮得多。

    【讨论】:

      【解决方案3】:

      此示例代码使用一个子例程,该子例程使用PCM technique 来控制数字引脚打开和关闭的时间间隔(并假设这些输出引脚连接到一个简单的扬声器)。请记住,声音的频率是产生音调的原因,而音量是这些频率的幅度。因此,您要问的是,要使声音更大,如何增加信号的幅度。但是由于这个简单的演示只能改变数字信号切换的时间(频率)而不是幅度(一个位是开或关。一个位永远不会“REALLY ON” [caps表示在这里大喊大叫:-)])所以你唯一的选择是在Arduino和扬声器之间添加另一层硬件以增加音调的幅度 - 也就是放大器。这可以是简单的东西,例如 this design tutorial 中描述的运算放大器,或者将扬声器替换为扬声器输入的插孔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 2017-06-01
        • 2021-10-15
        相关资源
        最近更新 更多