arduino点阵声音频谱_Arduino实现32分频音频频谱显示器

本文介绍了一个使用Arduino Nano和四块点阵屏制作的32分频音频频谱显示器项目,详细解释了工作原理和硬件配置,包括ADC设置、库的使用以及显示模式。该项目支持五种显示模式,适用于音乐频谱可视化。
摘要由CSDN通过智能技术生成

060edd0fbdd151636a60d135ac997f90.png

MAKER:Shajeeb/译:趣无尽 Cherry(转载请注明出处)

该项目通过 Arduino 和四块点阵屏,实现32分频的音频(音乐)频谱可视化显示。

这里用了大量篇幅对其原理做了解释(初学者理解起来开可能稍有难度),并且提供了完整的原理图和源代码。如果你喜欢直观地观赏音乐随着声音跳舞的话,可以一试!

往期精彩内容还有《用 Arduino DIY 假唱机器人+卖萌表情包》。

材料清单

Arduino Nano R3 × 1

电阻10k欧 × 1

电阻4.75k欧 × 3

电容100nF × 2

电阻100K欧 × 2

轻触开关12mm × 1

LED显示器32X8 × 1

5V电源(用于USB供电) × 1

主要特点

1、使用易于安装的库 arduinoFFT 和 MD_MAX72xx。

2、支持五种不同的显示模式,可通过按钮切换。

3、音频信号的左右声道都是混合的,不会错过任何节拍。

4、原型使用 32×8 LED 点阵,你可以随意改变。

5、音频可以从耳机输入或播放设备的Line-Out输入。

项目流程图

75e9dca30f3d16045d5127c806e6cd6b.png

原理图

9e56b7661df7fef16a8b759727f750ad.png

系统原理描述

Arduino 板(ATmega328P)内置模数转换器(ADC),可以将输入音频信号转换为数字样本。 ADC 设置为采样时钟频率为 38.46khz 的输入信号。这是通过将 ADC 预分频器配置为32分频来实现的。采样频率为 38.64Khz 这就意味着数字样本可以高达19.32Kz(奈奎斯特定理)的输入频率,对于音频信号来说非常好的。

为了显示音频信号的频谱,左右声道混合在一起并反馈到 ADC 的 A0 模拟输入。你可以使用一分多的音频线将信号同时馈送到频谱分析仪和另一个放大器上(如果有必要的)。

ADC 设置为使用外部参考电压。在这个项目中,参考电压来自 Arduino 板上的 3.3v 稳压电源。当模拟信号在零电压附近震荡时,我们需要在 ADC 的模拟输入端配置一个直流偏置。这可以确保 ADC 输出不会截断输入信号的负周期。相同的 3.3v 稳定电压由两个电阻 R1 和 R2 分压,然后反馈到模拟输入以进行直流偏置。使用此直流偏置,即使输入信号断开,ADC 也会在输出中产生 512 。稍后在代码中这个 512 将由 DC 偏置抹掉,从而读数代表实际的输入信号的变化。

ArduinoFFT 库是将输入模拟信号转换为频谱的核心代码。这个库易于使用,而且输出非常的准确。 原型配置为生成 64 个样本,并使用这些样本进行 FFT 。 ArduinoFFT 库可以对 16 到 128 之间的样本进行 FFT ,在程序中进行配置。但arduinoFFT库对 128 个样本的计算速度慢,因此我坚持最高值为 64 个,这样效果最好。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该项目用于使用Arduino制作32频段音频(音乐)频谱分析仪/可视化器。 硬件组件: Arduino Nano R3× 1 电阻10k欧姆× 1 电阻4.75k欧姆× 3 电容器100 nF× 2 电阻100k欧姆× 2 SparkFun按钮开关12mm× 1 32x8 LED矩阵显示器× 1 手动工具和制造机器: 烙铁(通用) 该项目用于使用Arduino制作32频段音频(音乐)频谱分析仪。该项目的预期受众是任何音频爱好者,学生或初学者,他们对电子元件,Arduino和C编程有基本的了解。该项目中使用的组件是低成本的项目,易于组装。 该频谱分析仪的主要特点: 使用易于安装的库“arduinoFFT”和“MD_MAX72xx” 支持五种不同的显示模式,可通过按钮切换 音频信号的左右声道都是混合的,这样你就不会错过任何节拍 原型使用32x8 LED矩阵显示器,这可以改变和轻松修改 音频可以从耳机输出或音乐系统/放大器的线路输出馈送 电阻值不是很严格,您可以选择任何最接近的值。请确保R1和R2(参考原理图)具有相同的值。 程序流程图: 系统描述: Arduino板(ATmega328P)内置模数转换器(ADC),用于将输入音频信号转换为数字样本。ADC配置为采样时钟频率为38.46khz的输入信号。这是通过将ADC预分频器配置为32实现的。采样频率为38.64Khz意味着数字样本可以再现高达19.32Kz(奈奎斯特定理)的输入频率,这对于音频信号来说已经足够了。 正如我在开始时提到的,该项目的目的是显示音频音乐信号的频谱。因此,左右音频通道混合在一起并馈入ADC的A0模拟输入。您可以使用音频分配器电缆,以便您可以将相同的音乐同时馈送到频谱分析仪和另一个放大器(如果需要)。 ADC配置为使用外部参考电压。在这个项目中,参考电压来自Arduino板上的3.3v稳压电源。当模拟信号在零电压电平之上和之下振荡时,我们需要在ADC的模拟输入端产生直流偏置。这可确保ADC输出不会截断输入信号的负周期。相同的3.3v稳定电压由两个电阻R1和R2分压,然后馈入模拟输入以进行直流偏置。使用此直流偏置,即使输入信号断开,ADC也会在输出中产生512。稍后在代码中,这个由DC偏置引起的512被减去,使得读数代表实际的输入信号变化。 ArduinoFFT库是将输入模拟信号转换为频谱的代码的核心。我发现这个库易于使用,并为该项目生成了最准确的输出。Prototype配置为生成64个样本,并使用这些样本进行FFT。ArduinoFFT库可以对16到128之间的样本进行FFT,这可以在程序中进行配置。但arduinoFFT库计算速度慢,有128个样本,因此我坚持64个样本中最好的最高。 本项目使用的显示为32列×8行LED矩阵。MD_MAX72xx库使显示控制部件非常容易。该库提供打开/关闭该程序中正在使用的列中任意数量的LED的功能。每个频带的幅度被映射在0到8之间,这取决于每个列中的LED的相应数量的LED被接通。 该程序提供五种显示模式,基本上通过在每列的不同位置打开/关闭LED来实现。您可以轻松修改/创建不同的模式。这里使用按钮来改变显示模式,转动显示图案移动到下一个,最后重置为默认模式。按钮连接到其中一个数字输入,并在每一轮显示刷新后扫描该输入。 频率响应: 经验证,系统能够响应高达18.6Khz的频率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值