该项目用于使用 Arduino Nano 和 8x32 WS2812B RGB Led 矩阵制作 RGB 32 波段音频(音乐)频谱可视化器。
非常感谢基于 MAX72xx led 矩阵的原始项目的Shajeeb作者。我只修改了led矩阵的pilot部分,使其适应RGB WS2812B Led Matrix。
链接到原始项目:32-Band Audio Spectrum Visualizer Analyzer
使用基于 5050 SMD 高亮度 LED 的 RGB LED 矩阵,需要使用外部电源,因为 RGB 矩阵每个 LED 可以吸收超过 10mA 的电流,因此在所有 LED 以最大亮度点亮的情况下,可以吸收超过 2.5 安培的电流。
出于这个原因,我在 +5V 上串联了一个二极管,以便能够在独立模式下为 Arduino 供电,当 USB 电缆未连接时,并避免 Arduino 成为 RGB 矩阵的电源,所以你避免用它无法提供的电流使威廉希尔官方网站 板的内部威廉希尔官方网站 过载。
在原项目中,除了输入二极管,为了保护 LED 矩阵输入免受可能的电压峰值,我还在 Arduino 引脚 D6 和数据输入之间串联了一个 390 欧姆电阻,以及一个 1000 µF 12V 电容器以改善Arduino 电源电压稳定性。
如主照片所示,我使用两个 RCA 音频插座(直接焊接在板上)在 4x6 厘米多孔板上制作了第一个原型,也可以用 3.5 毫米母插孔插座代替。避免嗡嗡声的重要一点是使用屏蔽电缆在源和卡音频输入之间建立连接。另一个技巧是保持 Arduino 和 LED 矩阵之间的连接尽可能短。
最后,所有的软件都是基于采样程序作者通过FFT库所做的伟大工作和Shajeeb的最终实现。
我添加了两个功能:
第一个是GetLedFromMatrix(...)将矩阵映射到行和列,并能够通过行和列坐标来寻址 256 个 LED 中的每一个。
第二个是我任意称为SetColumn(...)的那个,它根据音频数字化获得的峰值(0 到 7 之间的值)和中的预设颜色打开每一列的 LED一个二维数组。您可以根据自己的喜好更改值和颜色。为了简化代码,我使用了一个名为 Wheel() 的 sob 例程(取自 Adafruit 的 Neopixel 库附带的演示),它从 0 到 255 之间的值开始返回一个无符号的 32 位长值,以直接传递给 setPixelColor 函数。你可以随意玩,记住 Arduino 的内存限制,尽可能避免使用 32 位变量来存储 RGB 颜色值。
音频均衡
此外,由于我使用来自集成在 PC 主板中的声卡的音频进行了测试,为了改善频率响应,我添加了一个 32 个值的字节数组,它实际上构成了一条均衡曲线来衰减低音和增强高音。如果您不需要它,只需将 EQ_ON 变量设置为false或通过更改eq[32]数组的 32 个值来更改衰减级别,值 100 保持幅度不变,小于 100 衰减一个,大于一个衰减大于 100 强调频带。
LED亮度
矩阵的亮度在代码中预设为 32 (BRIGHTNESS const)。WS2812B矩阵的最大亮度值(纸上)是255但已经大于100了,LED灯不幸地从白色变成了淡黄色,可能需要通过中央的两条红线和黑线来为矩阵供电在右侧连接器。
我还在努力...
最后,如果你使用最大亮度64,1A的电源大概就够了,否则2A是必不可少的。
我正在开发一个使用OpenMusicLabs FHT库的新版本,它比 Arduino FFT 快很多倍。
敬请关注。:)
请原谅我的英语不好,我用的是谷歌翻译。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !