c - 在处理过程中,如何通过这段代码使音量变大?

标签 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));
  }
}

最佳答案

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

关于c - 在处理过程中,如何通过这段代码使音量变大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165949/

相关文章:

c - 如何在C中声明参数

java - 如何与arduino和java进行串口通信?

php - 我可以直接从我的 Arduino 将项目放入 MySQL 数据库吗?

amazon-web-services - 如何在 EC2 - CentOS 上调整卷大小?

amazon-ec2 - 每个 Amazon EC2 实例的最大附加卷数是多少?

c - 如何检查特定目录中是否存在文件?

c - 如何在c中的字符串宏中传递字符串参数

android - 多 Activity 应用程序中的setVolumeControlStream()

c - 初学者从结构数组中删除第一个元素 (C)

Arduino 和 RC 发射器