资料介绍
描述
我对可寻址的“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 库的形式提供了救援。
电路
电路原理图
![poYBAGNkWfqADy-ZAAFMRYhHfSY975.png](https://file.elecfans.com/web2/M00/77/76/poYBAGNkWfqADy-ZAAFMRYhHfSY975.png)
在此图中,标记为 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 文件可在下面的原理图部分下载。
面包板组装
![pYYBAGNkWf2AX8fuAAPS5IThiEo586.png](https://file.elecfans.com/web2/M00/78/08/pYYBAGNkWf2AX8fuAAPS5IThiEo586.png)
我为那些想像我一样探索和修改电路的人提供了这张图。面包板也是测试代码和所有组件的最不令人沮丧的方式。Fritzing 文件可在下面的原理图部分下载。
同样,看起来像稳压器的设备实际上是一个 5V 降压转换器。表示为 Arduino Nano(Rev3.0)的控制器实际上是 Arduino Nano Every。所有红线承载 5V,橙色线承载 9V,黑线接地。
原型板和盒子组装
![pYYBAGNkWgCAHD4MAAINgLuYxPk646.png](https://file.elecfans.com/web2/M00/78/08/pYYBAGNkWgCAHD4MAAINgLuYxPk646.png)
该图可在下面的“原理图”部分下载。图示的板比我使用的板大,但它让我能够更清楚地说明布局。
![poYBAGNkWgWAe5dCAAupJj4bh8Y610.jpg](https://file.elecfans.com/web2/M00/77/76/poYBAGNkWgWAe5dCAAupJj4bh8Y610.jpg)
通过竖起电阻器并将穿孔中的一些连接加倍,我能够将组件挤压到 7cm x 3cm 板上。它非常适合我选择的外壳,有足够的空间可供使用。
Nano 的位置使其 USB 连接器略微悬垂在电路板边缘。我在外壳上切了一个检修孔,我可以通过它连接 USB 电缆。这让我可以在不移除 Nano 的情况下重新编程。
我最初使用橡胶粘合剂将 Nano 直接放置在板上,直到焊点将其固定到位。
我决定在电路板和面板安装组件之间安装 JST 连接器。对于原型而言,这似乎过于热心,但有时间,我只是想熟悉这些连接器。我也怀疑我最终会想要重新安排一些事情。
![pYYBAGNkWgyAK3ypAAwhiUwTF0E132.jpg](https://file.elecfans.com/web2/M00/78/08/pYYBAGNkWgyAK3ypAAwhiUwTF0E132.jpg)
我在“定制零件和外壳”部分包含了我的施工图。这些可以节省您测量、定位和安装组件的时间。您还可以使用它们打印控件的符号。
![poYBAGNkWhGAEzO-AAfPgEemQb8054.jpg](https://file.elecfans.com/web2/M00/77/76/poYBAGNkWhGAEzO-AAfPgEemQb8054.jpg)
这张照片显示了 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次下载
- PC中的音频频谱反应式NeoPixel 0次下载
- 2x16频段音频频谱分析仪 1次下载
- 实时音频频谱分析仪开源分享 9次下载
- 带M5Stack的音频频谱显示 0次下载
- 基于树莓派的音频频谱图可视化设备 3次下载
- 超简单的音乐频谱可视化器 1次下载
- 使用Raspberry Pi的音频可视化器 1次下载
- RGB 32波段音频频谱展示台 1次下载
- 实用电子PicNMix PCB音频频谱显示 3次下载
- 综述知识图谱的数据模型和可视化技术 4次下载
- 综述知识图谱的数据模型和可视化技术 16次下载
- 教育大数据可视化分析研究的综合分析 108次下载
- 柔性动态可视化在医学图像可视化中应用 0次下载
- 单片机实现音频频谱显示的快速算法研究 12次下载
- 一个嵌入式数据可视化工具——Serial Studio 613次阅读
- 使用树莓派Pico开发板制作实时音频光谱图可视化器 612次阅读
- 几款好用的可视化工具推荐 617次阅读
- 详解图形绘制和可视化 406次阅读
- 如何利用树莓派的手势控制全息音频可视化器 1928次阅读
- 如何利用Arduino UNO制作一个交互式LED桌 2497次阅读
- 为什么要可视化图 大规模图可视化攻略方案 4161次阅读
- 外置式音频频谱显示器电路 6513次阅读
- 你知道轻量级神经网络可视化的通用框架么? 3140次阅读
- 堡盟推出新款VeriSens XF系列视觉传感器可自动实现3D识别与可视化 1216次阅读
- 如何对MCU程序中的数据进行可视化 5613次阅读
- 如何基于Plotly和ipywidgets在Jupyter Notebook中创建交互可视化内容 1.4w次阅读
- 数据可视化,不仅仅是统计图表 5853次阅读
- 实现海量数据分析及可视化的简便方法 4804次阅读
- 基于MSP430的FM音频频谱分析仪的设计方案 2893次阅读
下载排行
本周
- 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次下载 | 免费
评论