如何在处理过程中使此代码的音量更大?

时间:2012-02-06 19:24:38

标签: c arduino volume speaker

我有代码从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));
  }
}

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

音频信号本质上是签名数量。如果你的图书馆使用unsigned char作为音频数据,那么它可能是映射0 - &gt; -128和255 - &gt;那么让我们看看你的信号。

前6个样本:

140, 124, 130, 126, 129, 126

是127附近的轻微振荡。然后是你信号的其余部分

128, 127, 128, 127, ...

或多或少是DC。这听起来是听不见的。

尝试以{0,255,0,255,...}的信号进食,它应该更响亮。

答案 2 :(得分:0)

如果您阅读pcm.h中的注释,您会看到它表示音量非常低。 PCM技术调整引脚为高电平的时间百分比。我同意jdh的建议,即音量将受到限制,无论什么,放大器都会有所帮助。对于软件中更响亮的东西,我认为你需要更多的频率可调的方波,这样引脚就会很高而且频率很低,并且实际频率会调整。我没有用它,但看看arduino Tone()库。