电路图
首页 > 光电技术实用电路 >光电接口电路 > USB LED调光器
USB LED调光器

USB LED调光器 2026/03/27

USB LED 渐变器

USB-LED-渐变器是一种通过 USB 控制多个 LED 的设备。我构建它是为了显示我的互联网连接状态、视频录像机(VDR)的录制状态以及磁盘空间不足的警告。您可以想象无数种应用场景。

LED 通过脉冲宽度调制(PWM)进行控制。这样,它们不仅是打开或关闭,还可以控制亮度。设备中包含许多“波形”,可以通过 LED 显示。这样,一个 LED 可以显示某种正弦波或三角波,而无需与控制主机交互。每个 LED 都可以单独控制;每个都可以显示自己的波形。

USB LED Fader

您可以为每个 LED 分配三种不同的波形。前两种(0 和 1)是“永久”波形。它们交替显示,直到需要不同的波形。第三种波形(2)仅显示一次;之后设备将切换回前两种波形的交替显示。

它们交替显示,直到需要不同的波形。第三种波形(2)仅显示一次,之后设备将切换回前两种波形的交替显示。

一个波形由三个参数描述:波形、一个波形重复的持续时间和切换到下一个波形前的重复次数。

这个版本支持四个 LED。很容易将数量更改为一到八个。我没有测试超过四个的情况,但我可以想象控制器的负载可能太高,无法可靠地通过 USB 通信。

分发中包含三个部分:ATmega8 微控制器的固件、可以在 Linux 下运行的命令行客户端以及构建设备所需的电路。

这个项目基于 Objective Development 的 PowerSwitch 示例应用程序。类似地,它使用 Objective Development 的纯固件 USB 驱动程序,用于 Atmel 的 AVR 微控制器。

Objective Development 的 USB 驱动程序是 USB 1.1 标准(低速设备)在廉价的 Atmel AVR 系列单芯片微计算机上的纯固件实现,例如 ATtiny2313 甚至一些小的 8 引脚设备。它实现了标准,使得有用的应用可以被实现。有关特性和限制,请参见文件 "firmware/usbdrv/usbdrv.h"。

构建和安装

电路

电路仅包含少量标准组件。没有涉及特殊的 USB 芯片。

安装过程在文档中描述。

用法

将设备连接到 USB 端口。所有 LED 应闪烁以指示设备已初始化。

然后使用命令行客户端如下:

usb-led-fader status

usb-led-fader set    

usb-led-fader clear

usb-led-fader reset

usb-led-fader show

usb-led-fader test

当使用 set 函数时,可以一次定义多个波形。您只需提供所有波形的参数。参见下面的示例。

参数

ledId: LED 的 ID(0-n,取决于电路中 LED 的数量)。

waveId: 波形的 ID(0-1: 恒定波形,2: 覆盖)。

waveformId: 波形的 ID(0-31: 亮度,32-37: 模式)。有关模式的参考,请使用 show 函数。

periodDuration: 一个波形重复的时间,以秒/10 为单位。值为 0 可用于重置波形。

repetitionCount: 切换到下一个波形前的重复次数。值为 0 可永远重复此波形。

示例

获取所有 LED 的状态:

usb-led-fader status

这将产生类似于以下的输出:

LED 0           curid   curvalue     curpos     currep    nextupd

0          2         26          0         23

wave   waveform     length     repeat   duration    updtime

0         38         32          1         20         45

1          0          1          1          0          1

2          0          1          1          0          1

LED 1           curid   curvalue     curpos     currep    nextupd

0         14         19          0         19

wave   waveform     length     repeat   duration    updtime

0         38         32          1         20         45

1          0          1          1          0          1

2          0          1          1          0          1

LED 2           curid   curvalue     curpos     currep    nextupd

0         31         16          0         43

wave   waveform     length     repeat   duration    updtime

0         38         32          1         20         45

1          0          1          1          0          1

2          0          1          1          0          1

LED 3           curid   curvalue     curpos     currep    nextupd

0          6          9          0         39

wave   waveform     length     repeat   duration    updtime

0         38         32          1         20         45

1          0          1          1          0          1

2          0          1          1          0          1

在此输出中,值 curvalue、curpos、nextupd 和 updtime 仅用于调试目的。普通用户不应关心它们。其他值的含义应该很清楚。

设置第一个 LED 保持中等亮度:

上述设备

我知道我本可以焊接得更漂亮... ;-)

usb-led-fader set 0 0 15 10 1

因此,在 LED 0 上,波形 0 设置为波形 15。它将停留一秒钟,并在切换到下一个波形前重复一次。由于我们没有定义下一个波形,因此这个波形将永久保持。

现在在第一个 LED 上设置第二个波形,比前一个稍亮:

usb-led-fader set 0 1 25 10 1

这是 LED 0 上的波形 1。波形 25 被定义为恒定亮度级别。设置第二个波形后,它将与第一个波形每秒交替一次,因为两个波形具有相同的持续时间和相同的重复次数。

在第一个 LED 上设置第三个波形:

usb-led-fader set 0 2 36 20 5

这将在第一个 LED 上设置第三个波形(波形 2)。波形 36 是一个良好的类似正弦波,因此 LED 开始渐变。一个渐变周期需要 2 秒钟,重复 5 次。由于这是第三个波形,在重复后,LED 返回波形 0 和波形 1 的交替显示,此波形被丢弃。

一次设置多个波形:

usb-led-fader set 0 0 15 10 1 0 1 25 10 1 0 2 36 20 5

这将一次设置所有上述波形。因此,第一个 LED 将首先渐变正弦波五次,然后开始以一秒的节奏在两种亮度之间交替。

清除第一个 LED:

usb-led-fader clear 0

这将清除第一个 LED 上的所有三个波形。

重置设备:

usb-led-fader reset

所有 LED 将闪烁一次,以指示设备已重置且 LED 正常工作。

在屏幕上显示波形:

usb-led-fader show 36

这将产生类似于以下的输出:

wave 36 - length 64

31:                              *****

30:                            *********

29:                           ***********

28:                         ***************

27:                        *****************

26:                       *******************

25:                       *******************

24:                      *********************

23:                     ***********************

22:                    *************************

21:                    *************************

20:                   ***************************

19:                  *****************************

18:                  *****************************

17:                 *******************************

16:                *********************************

15:               ***********************************

14:               ***********************************

13:              *************************************

12:             ***************************************

11:             ***************************************

10:            *****************************************

9:           *******************************************

8:          *********************************************

7:          *********************************************

6:         ***********************************************

5:        *************************************************

4:      *****************************************************

3:     *******************************************************

2:   ***********************************************************

1: ****************************************************************

================================================================

请记住,显示波形的宽度对应于波形的长度。如果您显示非常简单的波形,如恒定亮度级别(0-31),则长度为 1。因此只显示一列。

测试设备:

usb-led-fader test

此功能向设备发送许多随机数。设备返回数据包,客户端查找发送和接收数字之间的差异。

缺点

如上所述,控制多个 LED 的 PWM 对于一个小型微控制器来说工作量很大。USB 协议通信也是如此。这些 together 导致设备负载很大,因此与设备的通信不是 100% 可靠。不过,至少在我们的测试中,超过 99%。

USB LED Fader

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

可能感兴趣的电路图
可能感兴趣的器件
推荐帖子