我有代码从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));
}
}
答案 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()库。