如何构建一个能够随音乐灯光闪烁的LED系统?

5

基本上,我想要做的是,给定一个音频文件作为输入(最有可能是mp3或我可以使用一些音频引擎来处理其他类型),从我的电脑控制一些LED灯,使它们成为类似于winamp中的示波器。

我需要做什么才能实现这个功能?我对自己动手构建、编码、硬件等方面很感兴趣。

我将在Windows上使用C++。


太过模糊了 - 也许你可以就这个应用程序的编程提出一个具体的问题? - Paul R
4个回答

2
这里提供一个可能的方法(高层次描述):
您可以使用基本电路中的简单微控制器(MCU),并连接多个LED。 LED连接电路应易于找到。大多数MCU制造商也会在产品数据表中提供一个示例测试/ LED闪烁电路,以及一个示例程序。
MCU可以通过并口与您的PC进行接口(我使用过ATmega8,其输入引脚与并口引脚兼容)。它也可以使用更复杂/更高级的方法进行接口 - 通过串行/ USB端口,使用UART到串行或UART到USB模块与您的MCU。然后,您可以从PC应用程序通过并行/串行/ USB输出不同的值到MCU,并根据需要使MCU代码闪烁LED。有一些文章介绍了如何从并口本身为LED提供电源,但不建议这样做。我使用inpout32.dll直接访问并口寄存器。如果不使用并口方法,则.NET框架提供了SerialPort类可供使用。
至于音乐方面,我从未在软件中处理过音频文件。应该有一些库可以使用,您可以将振幅/频率变化随时间缩放到可在您拥有的LED上显示的数字刻度。由于这意味着您想要一个基本的音频播放器,我相信您可以找到关于PC应用程序音频方面的一些信息。
编辑:
在我的答案中,我假设这是一个个人项目,并提出了一种预算较低的方法 - 在当地电子商店花费几美元即可获得所有东西。这是一个不错的开始,但正如其他答案所建议的那样,可能有更好的可扩展解决方案。使用套件 - 预制MCU板可能更容易但更昂贵!如果这是专业项目,则可能值得成本!
祝你好运!

1
对于音频部分,您可能想要查看FMOD库(http://fmod.org/)。在那里,您应该能够获得足够的信息以一种酷炫而简单的方式闪烁LED :) - PeterK

1

听起来这是一个使用Arduino开发套件的好案例。基本上,它是一个可以连接到您的USB端口并驱动外部电子设备的小型外部设备。

在软件方面,您需要捕获音频流,通过带通滤波器进行处理,并对其进行阈值处理。如果频率带中的信号超过了阈值,您可以通过向Arduino发送命令来点亮LED。


1

所以我猜你想要建立一个类似LED墙的东西。难点在于将视频信号(可以通过Winamp插件或自定义解决方案预先构建)映射到LED墙像素上。我碰巧知道一些在活动业务中使用的商业解决方案。通常,您通过将一组LED条或LED瓷砖捆绑在一起来构建LED矩阵。这些设备通过DMX 512协议进行控制。 DMX 512具有512个通道,每个通道的分辨率为8位。单个LED像素通过3个通道RGB进行控制。

Madrix这样的LED灯光控制软件需要将图像生成器的信号映射到LED像素上,然后再将其映射到DMX信号上。 DMX并不难实现,它是一种非常简单且非常稳健的协议,可以使用廉价电缆进行布线,并且在微控制器、DMX / USB适配器等方面也有许多商业解决方案可用。


1

使用并口直接驱动LED灯。如果您的需求简单,那么并口非常容易使用。请查看这个资源以获取布线示例

当我在Roskilde大学时,我们将整个计算机科学楼变成了一台巨大的VU表,用于校园年度派对。

基本上,一台旧电脑被用来采样声音级别,作为0-255之间的值直接输出到“经典”的PC并口。

并口驱动一系列220V继电器,连接到不同的计算机科学办公室中放置的绿色和红色灯泡。

效果很棒!最后的点睛之笔是突然出现的日本游客拍摄建筑物的照片...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接