该项目通过 Arduino 和四块点阵屏,实现32分频的音频(音乐)频谱可视化显示。
这里用了大量篇幅对其原理做了解释(初学者理解起来开可能稍有难度),并且提供了完整的原理图和源代码。如果你喜欢直观地观赏音乐随着声音跳舞的话,可以一试!
材料清单
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输入。
项目流程图
原理图
系统原理描述
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 偏