RGB 背光 + 音频可视化器





准备工作:
材料:
我提供了所用零件的详细清单以及您可以在哪里购买它们:
- Arduino Nano/Uno(亚马逊/全球速卖通)
- WS2812 RGB LED 灯带(亚马逊/ AliExpress),请注意,IP 代表防护等级(例如,如果需要,可以防水),数字代表灯带每米有多少个 LED(对于电源很重要)
- 5V电源(亚马逊(取决于 LED 灯带有多少个)-> 每个 LED 需要 ~20mA,本说明中使用的灯带有 45 个 LED(每米 30 个),所以我需要 45*20mA ~ 1.5A 电源(Arduino、MSGEQ7 也需要一些),我连接了一个提供 3A 的电源,这对我们来说绝对足够了
- 3.5 毫米音频插孔(亚马逊/ AliExpress)
- 电位器10kOhm(亚马逊/ AliExpress)
- 按钮(亚马逊/全球速卖通)
- 电阻(1x 10kOhm,1x 220Ohm,对于 MSGEQ7:2x100kOhm)
- 电容器(1x 1000yF 电解电容器(Amazon / AliExpress)、2x 10nF,用于 MSGEQ7:2x 0.1yF、1x33pF(Amazon / AliExpress)
- 简单二极管(亚马逊/ AliExpress)
- DC 插孔(亚马逊/全球速卖通)
工具:
构建原理图





主要示意图:
因此,使用Adafruit_NeoPixel 库将 WS2812 Strip 与 Arduino 连接起来非常简单。
LED 灯带有三个引脚:VCC、DATA、GND。VCC接 5V,GND 接地,中间的DATA 引脚连接到 Arduino 上的 LED_DATA 引脚 D6。现在,灯带上的每个 LED 都内置一个 WS2812 芯片,该芯片接收来自 Arduino 的数据并将其传递给下一个 LED,因此我们只需将 LED 数据输入到灯带上的第一个 LED 一次即可。
下一步将解释按钮改变模式和电位器控制亮度的逻辑。
确切的示意图可以在 fritzing 文件的屏幕截图中找到,该文件也可以下载。
请注意,务必仅通过二极管将 Arduino 的 5V 引脚连接到电源,这样当我们插入 USB 线进行编程时,Arduino 才不会损坏。10nF 和 1000uF 也是为了安全起见,这样就不会出现电源短缺的情况。
对于MSGEQ7 电路:
这是将 MSGEQ7 连接到 Arduino 的最常见电路。这也是您需要3.5 毫米音频插孔的地方。大多数音频插孔的中间针脚为 GND,左右两侧的针脚为立体声通道,它们通过一个 10nF 电容连接到 MSGEQ7 的信号输入针脚,如原理图所示。您还可以在信号输入针脚上添加一个电位器来控制音频信号的灵敏度,但这实际上并非必需。MSGEQ7连接到 Arduino,模拟输出针脚连接到 A1 ( MSGEQ_OUT),频闪针脚连接到 D2(STROBE),复位针脚连接到 D5(RESET)。
代码






GitHub 上完整 Sketch的链接:PhilKes/RGB_Audio_Backlight
代码注释:
在代码中,我们使用新的 Adafruit_NeoPixel 对象声明 WS2812 Strip 对象,传入 LED 的数量(根据您的设置更改 NUM_LEDS)、连接到 LED_DATA 引脚的 Arduino 引脚以及颜色值传输的编码类型 + 速度。
完成后,我们在 setup() 函数中通过setBrightness(0-255)设置默认亮度,并使用begin()函数开启灯带。现在,我们可以使用setPixel(LED, Color) 函数为每个像素/LED 设置特定的 RGB 颜色。完成后,将所有 LED 设置为新值,并使用 strip.show() 函数更新灯带。以上就是编写任何动画所需的全部代码逻辑。现在,为了实际控制动画/模式,我们在 Arduino 上添加了一个按钮/触觉开关。因此,我们将按钮的一端连接到 VCC,另一端连接到 Arduino 的 D3 引脚,并通过一个 10kOhm 电阻连接到 GND。我们在 setup() 函数中将一个中断连接到此引脚,每次按下按钮时都会触发对 changeMode() 方法的调用。在changeMode() 函数中,我们简单地切换到下一个模式,并指示当前动画中断。一旦中断发生,loop() 函数就会重新执行,并播放新的动画/模式。
提供的动画包括:彩虹色褪色、红色、绿色、蓝色、白色、音乐分析器模式
此外,我还添加了一个10kOhm 电位器来控制条带的亮度。方法checkBrightness()检查连接到引脚 A2(电位器的中间引脚)的电位器的输出,并相应地更新条带的亮度。
对于通过 MSGEQ7 的 musicAnalyzer() 模式:
此模式可视化连接到 MSGEQ7 信号输入的音频信号。MSGEQ 输出模拟信号,展示单个音频带(8 个带,从低频到高频)。musicAnalyzer ()方法通过重置 MSGEQ 然后缓冲提供的模拟值来获取音频带的当前值。可以通过在频闪引脚上放置一个高边来更改输出的频段。在缓冲所有 8 个频段后,该方法将所有 LED 像素值向后移动一位,并计算 LED 0 的新值。颜色由以下颜色组成:低频(低音)红色、中频绿色和高频蓝色。在加载新值之前移动值会为我们带来流畅的动画。
在 PC 上设置音频

1.视频观看链接https://www.youtube.com/embed/ppTdXinVPAs?feature=oembed&autoplay=1
2.要将您的音乐/音频输入到 MSGEQ7 但仍让您的音乐在扬声器上播放,您必须使用 RealtekHD Stereomix 功能或将 MSGEQ 音频输入连接到声卡/主板的后置扬声器输出。
要在 Win10 中启用 Stereomix,请右键单击右下角的扬声器图标,然后点击“声音”。您可以在“录音”选项卡中激活 Stereomix(右键单击 -> 激活)。如果 Stereomix 不可见,请右键单击并选择“显示已禁用的设备”。现在打开 Stereomix 的设置,并让它监听并复制主扬声器的音频。
如果您想使用后置扬声器输出,请在“声音”菜单中打开主扬声器的设置,标签“改进”,然后从列表中选择“环境”,并在下面的下拉菜单中选择“房间”。
这现在可以启用扬声器和 MSGEQ7 的并行音频输出。
注释

由于原理图既不复杂也不大,我设法把整个电路放进桌子下面的一个 3D 打印小盒子里,盒子上留有 USB 接口、音频插孔、直流电源插孔、电位器和按钮的孔。您可以直接使用公/母排针,并通过跳线将 3 根线缆连接到 WS2812 灯条上。











