资料介绍
描述
我对可寻址的“Neopixel”RGB LED 的可能性很感兴趣。我想学习如何控制它们并在具有挑战性的项目中使用它们。我读过一些使用 LED 阵列和矩阵来表示音频频谱的项目,就像图形均衡器上的照明显示器一样。
我想到了一些不同的东西。一个垂直的 LED 串怎么样,低频在底部,高频在顶部,每个频段的幅度会显示为每个 LED 的亮度?然后音乐将沿着这条弦“跳动”。我当然不是第一个想到或执行它的人,但我还没有看到这个特定的应用程序。
如果 LED 的亮度由音乐控制,LED 的颜色可以由设备的用户设置吗?
这个怎么运作
该设备的电路和代码以两种模式运行。这些模式是通过前面板右侧的模式开关选择的。当模式开关在左侧位置时,颜色设置模式被激活。
颜色设置模式允许用户使用 5 个电位器设置 LED 灯条的颜色范围。具体来说,从左到右,电位器调整:
1.数值——LED灯带的整体亮度
2. 饱和度 - 此设置逐渐在鲜艳的色彩和纯白色之间转换色调
3. 顶部色调 - 指定 LED 灯条顶部的色调(颜色)
4. 底部色调 - 指定 LED 灯条底部的色调(颜色)
当 LED 灯带包含多个 Hue 时,颜色顺序始终遵循色谱的顺序:红色、橙色、黄色、绿色、蓝色、紫色。
要为整个 LED 灯条选择一个色调,只需将顶部色调和底部色调电位器放在相同的位置。
5. Spread - 控制色相沿 LED 灯条的分布范围,从集中在中间到“聚集”在两端。
我使用色相、饱和度和值 (HSV) 颜色模型来控制 LED,而不是 RGB 参数,因为 HSV 直接产生我想要的效果。本文解释并比较了 HSV 和 RGB 颜色模型。幸运的是,代码中使用的 Adafruit Neopixel 库同时支持 RGB 和 HSV。
当模式开关处于右侧位置时,FFT 模式被激活。在这种模式下,电位器被禁用。
FFT(快速傅立叶变换)模式接受来自音乐播放器耳机连接的输入。使用 FFT,它计算每个频带的 HSV 设置的值(亮度)部分。然后它将这个值参数与用户选择的颜色组合起来,并将它们发送到适当的 LED。本文对傅里叶变换进行了简单易懂的解释。实际的计算超出了我的想象,但慷慨的 Arduino 社区再次以 ArduinoFFT 库的形式提供了救援。
电路
电路原理图
在此图中,标记为 Arduino Nano (Rev3.0) 的设备实际上是一个 Arduino Nano Every。
标有电压调节器 5V 的设备实际上是一个 5V 降压转换器。9VDC 墙上适配器通过其 Vin 引脚为 Nano 供电,并为降压转换器供电。降压转换器的作用是为 LED 灯条提供 5V 电源。Nano 通过引脚 D3 与 LED 灯条通信。
我使用了这个项目中详述的音频输入电路(在图的左上角):
该电路使用 Nano 的 REF 和 3.3V 引脚,并馈入 A0 模拟输入。
五个电位器用于设置 LED 灯条的颜色和颜色范围。代码部分描述了这五种设置。它们由 Nano 的模拟输入 A1 到 A5 读取。
模式开关用于选择颜色设置或 FFT 模式。开关位置在 Nano 的 D2 引脚上读取。
Fritzing 文件可在下面的原理图部分下载。
面包板组装
我为那些想像我一样探索和修改电路的人提供了这张图。面包板也是测试代码和所有组件的最不令人沮丧的方式。Fritzing 文件可在下面的原理图部分下载。
同样,看起来像稳压器的设备实际上是一个 5V 降压转换器。表示为 Arduino Nano(Rev3.0)的控制器实际上是 Arduino Nano Every。所有红线承载 5V,橙色线承载 9V,黑线接地。
原型板和盒子组装
该图可在下面的“原理图”部分下载。图示的板比我使用的板大,但它让我能够更清楚地说明布局。
通过竖起电阻器并将穿孔中的一些连接加倍,我能够将组件挤压到 7cm x 3cm 板上。它非常适合我选择的外壳,有足够的空间可供使用。
Nano 的位置使其 USB 连接器略微悬垂在电路板边缘。我在外壳上切了一个检修孔,我可以通过它连接 USB 电缆。这让我可以在不移除 Nano 的情况下重新编程。
我最初使用橡胶粘合剂将 Nano 直接放置在板上,直到焊点将其固定到位。
我决定在电路板和面板安装组件之间安装 JST 连接器。对于原型而言,这似乎过于热心,但有时间,我只是想熟悉这些连接器。我也怀疑我最终会想要重新安排一些事情。
我在“定制零件和外壳”部分包含了我的施工图。这些可以节省您测量、定位和安装组件的时间。您还可以使用它们打印控件的符号。
这张照片显示了 LED 柱组件的底座。该项目要求 LED 灯条包含 29 个 LED。LED灯条的背面是自粘的,所以我把它粘在一块1/2”x1/8”的铝条上。我想扩散 LED 的光,我想到了氯丁橡胶管。它通常具有半透明的白色。我发现这种内径为 12 毫米的管子非常适合灯条和 LED 灯条。光线尚未扩散到我喜欢的程度,我将尝试使用其他材料。我的大女儿,一位艺术家,建议使用聚酯薄膜。
编码
我几乎在每一行代码中都添加了注释,以便在我学到的时候向自己解释。所以在这里,我将更笼统地描述它。
与 LED 灯条通信
该代码使用 Adafruit NeoPixel 库与 LED 灯条进行通信。以下是图书馆和图书馆用户指南的链接。
主循环的结构
主循环分为两个循环;颜色设置循环和 FFT 循环。模式开关的位置决定了哪个循环处于活动状态。循环由读取开关位置的“while”语句控制。
void loop()
while (digitalRead(modeSwitchPin)==LOW){
//Colour Setting code goes here because the mode switch is in the LOW (Colour Set) position.
}
//FFT code goes here because the mode switch is in the HIGH (FFT) position, outside “while” loop.
//If the mode switch is moved to LOW (Colour Set), reset Nano to re-initialize variables and memory.
if (digitalRead(modeSwitchPin)==LOW){
resetFunc();
}
}
当模式开关处于颜色设置位置 (LOW) 时,颜色设置代码将保持循环。
只要将模式开关拨到 FFT 位置 (HIGH),“while”循环就会中断,FFT 代码就会开始循环。
当模式开关再次轻弹到颜色设置位置时,软复位功能被激活,重新初始化 Nano 并允许颜色设置代码再次开始循环。
我包含了软重置功能,因为颜色设置代码在 FFT 代码运行后拒绝运行。我不知道为什么会发生这种情况,但是软重置有效。
发送到 LED 灯条的所有指令都采用 RGB 标准的格式 strip.setPixelColor()。但是,我选择使用 HSV 参数设置颜色,然后将它们转换为 RGB。
颜色设置模式:传播调整
这个特性需要一些解释。我添加了这个调整,因为我想改变沿 LED 灯带的色调分布,从集中在中间到“聚集”在两端。我将 sigmoid 曲线(也称为 s 曲线)公式应用于色调范围。
k=analogRead(kPin); //read k pot, 0-1023
该行读取Spread 电位器的位置。
hueSig[i] = hueMax/(1+(pow(2.718,(0-(k/4000000))*(hue-(hueMax/2))))); //apply s-curve
在这条线中,Spread 电位器 (k) 的值用于调整 S 形曲线的斜率,从而改变每个 LED 的色调。然后每个 LED 的色调变为 hueSig[i]。顺便说一句,我通过实验得出了 4000000 的值。
本文解释了 sigmoid 曲线。我在文章的开头使用了基本方程。
FFT 模式
我当然没有在这里发明任何东西。感谢 Chris Parker 分享他的设计和代码。我还借鉴了Arduino FFT 库文档中的示例。
- 使用Arduino制作32波段音频频谱分析仪/可视化仪
- 基于树莓派的音频频谱图可视化设备 3次下载
- 超简单的音乐频谱可视化器
- 使用Raspberry Pi的音频可视化器
- RGB 32波段音频频谱展示台
- Python数据可视化编程实战 29次下载
- 基于HONSOR的3D可视化智慧档案馆白皮书 20次下载
- 综述知识图谱的数据模型和可视化技术 4次下载
- 综述知识图谱的数据模型和可视化技术 16次下载
- 教育大数据可视化分析研究的综合分析 108次下载
- 卫星载荷可视化仿真分析平台设计方案 30次下载
- 柔性动态可视化在医学图像可视化中应用 0次下载
- 单片机实现音频频谱显示的快速算法研究 12次下载
- 基于现场总线技术的可视化监控冗余系统
- VegaGIS可视化系统的设计和实现
- 使用树莓派Pico开发板制作实时音频光谱图可视化器 1368次阅读
- 几款好用的可视化工具推荐 971次阅读
- 详解图形绘制和可视化 643次阅读
- 启动仿真软件WinCC Runtime Advanced测试可视化功能 6652次阅读
- 如何利用树莓派的手势控制全息音频可视化器 2256次阅读
- 为什么要可视化图 大规模图可视化攻略方案 4446次阅读
- 外置式音频频谱显示器电路 6860次阅读
- 堡盟推出新款VeriSens XF系列视觉传感器可自动实现3D识别与可视化 1303次阅读
- 如何把握设计与功能之间的平衡,创建出简洁直观的可视化图像? 3079次阅读
- 如何对MCU程序中的数据进行可视化 5861次阅读
- 数据可视化,不仅仅是统计图表 6009次阅读
- 实现海量数据分析及可视化的简便方法 4991次阅读
- CNN可视化理解的最新综述 1.1w次阅读
- 可视化策略的数据分析 4315次阅读
- 基于MSP430的FM音频频谱分析仪的设计方案 3118次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多