RGB 背光 + MSGEQ7 Audio Visualizer
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
|
应用和在线服务
|
关于这个项目
这是从我原来的 Instructables 导入的 (点击这里 )
欢迎来到我关于如何构建 RGB LED 背光源的教程 例如电视或办公桌的背面。
原理图本身非常简单,因为 WS2812 LED 灯条 很容易与例如 Arduino Nano 接口 .
注意: 如果您只想要没有音频可视化的 LED 背光,则不必使用额外的 MSGEQ7 音频分析器电路。
我提供了一份详细的使用过的零件清单 以及在哪里可以买到它们:
- Arduino Nano/Uno (亚马逊/速卖通)
- WS2812 RGB LED 灯带 (亚马逊/速卖通),请注意 IP 代表保护(例如,如果需要防水),数字代表每米灯条有多少个 LED(对电源很重要)
- 5V 电源 (亚马逊)(取决于 LED 条有多少个)-> 每个 LED 需要~20mA,本教程中使用的条有 45 个 LED(每米 30 个)所以我需要 45*20mA ~ 1、5Ampere 电源(Arduino、MSGEQ7 需要一些也是),我连接了一个提供 3A 电流的电源,现在对我们来说已经足够了
- 3.5 毫米音频插孔 (亚马逊/速卖通)
- 电位器 10kOhm(亚马逊/速卖通)
- 按钮 (亚马逊/速卖通)
- 电阻 (1x 10kOhm、1x 220Ohm,对于 MSGEQ7:2x100kOhm)
- 电容器 (1x 1000yF 电解(亚马逊/速卖通),2x 10nF,用于 MSGEQ7:2x 0.1yF,1x33pF(亚马逊/速卖通)
- 简单的二极管 (亚马逊/速卖通)
- DC 插孔 (亚马逊/速卖通)
补给:
第 1 步:构建原理图
主要原理图:
因此,使用 Adafruit_NeoPixel 库将 WS2812 Strip 与 Arduino 连接起来非常简单。
LED 灯条有 3 个引脚: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.5mm 音频插孔的地方 .大多数音频插孔的中间引脚是 GND,左/右引脚是立体声通道,通过 10nF 电容器连接到 MSGEQ7 的信号输入引脚,如原理图所示。您还可以在 Signal In Pin 上添加一个电位器来控制音频信号的灵敏度,但实际上没有必要。 MSGEQ7 连接到 Arduino 带有模拟输出引脚 连接到A1 (MSGEQ_OUT),频闪 固定到 D2 (STROBE), 重置 固定到 D5 (重置)。
rgb_controller.fzz
第 2 步:代码
GitHub 链接到完整草图 :RGBStripe_Control_WS2812
代码注释:
在代码中,我们使用新的 Adafruit_NeoPixel 对象声明 WS2812 Strip 对象,传入 Led 的数量(更改 NUM_LEDS 以进行设置 ), Arduino Pin 连接到 LED_DATA pin, 编码类型+色值传输速度。
完成后,我们在 setup() 中设置默认亮度 通过 setBrightness(0-255) 并使用 begin() 打开 Strip .我们现在可以设置每个单独的像素/LED 使用 setPixel(LED, Color) 转换为特定的 RGB 颜色 .完成后,将所有 LED 设置为新值,我们使用 strip.show() 更新条带 .这基本上是我们编写任何我们想要的动画所需的所有代码逻辑。现在要实际控制动画/模式,我们添加一个按钮 / 触摸开关到 Arduino。因此,我们将按钮的一端连接到 VCC,另一端连接到 Arduino Pin D3 并带有一个 10kOhm 电阻到 GND。我们在 setup() 中为这个 Pin 添加一个中断 , 触发对 changeMode() 的调用 每次我们按下按钮时的方法。在 changeMode() 我们简单地切换到下一个模式 并告诉当前动画中断。一旦发生这种情况,loop() 就会被新执行,并将播放新的动画/模式。
提供的动画包括:彩虹色渐变、红色、绿色、蓝色、白色、音乐分析器模式
另外我添加了一个 10kOhm 电位器来控制条带的亮度 .方法 checkBrightness() 检查连接到引脚 A2(电位器的中间引脚)的电位器的输出并相应地更新条的亮度。
对于通过 MSGEQ7 的 musicAnalyzer() 模式:
此模式可视化音频信号 连接到 MSGEQ7 的信号输入。 MSGEQ 输出一个模拟信号,显示单个音频频段(8 个频段,从低频到高频)。 musicAnalyzer() 方法 获取音频频段的当前值 通过重置 MSGEQ,然后缓冲提供的模拟值。可以通过在 Strobe Pin 上放置一个高侧翼来改变正在输出的频段。在所有 8 个波段都被缓冲后,该方法将所有 LED 像素值移回一位并计算 LED 0 的新值 .颜色包括:低频(低音)红色、中频绿色和高频蓝色。 在加载新值之前移动值给了我们一个很好的平滑定时动画。
第 3 步:在 PC 上设置音频
要将您的音乐/音频输入 MSGEQ7 但仍能在扬声器上播放音乐,您必须使用 RealtekHD Stereomix 功能或将 MSGEQ 音频输入连接到例如声卡/主板的后置扬声器输出。
要在Win10中启用立体声混音,请右键单击右下角的扬声器图标并单击“声音”,您可以在此处在“录音”选项卡中激活立体声混音(右键单击->激活)。如果 Stereomix 不可见,请右键单击并选择“显示禁用的设备”。现在打开 Stereomix 的设置并告诉它收听和复制主扬声器的音频。
如果您想使用后置扬声器输出,请在“声音”菜单中打开主扬声器的设置,选择“改进”,然后从列表中选择“环境”,然后在下面的下拉菜单中选择“房间”。>
这现在可以启用扬声器和 MSGEQ7 的并行音频输出。
第 4 步:注释
由于原理图并不复杂,尺寸也不大,我设法将整个电路放入一个带有用于 USB 连接器、音频插孔、DC 插孔、电位计和按钮的孔的小盒子中。您可以简单地使用公/母排针并通过跳线将 3 条电缆连接到 WS2812 条。
代码
Arduino Sketch 下载
https://github.com/PhilKes/RGBStripe_Control_WS2812示意图
Breaboard 原理图将 Arduino 连接到 WS2812 Strip,通过电位计进行亮度控制 fvwp3zyjs5c4z851_12HuWgZiDT.fzzStandalone MSGEQ7 Schematic 仅用于 Audio Visualizer Mode将信号输入连接到 3.5 毫米音频插孔左/右声道和其他控制引脚,如其他原理图所示
制造工艺