USB LED Fader

Данное устройство USB-LED-Fader позволяет управлять несколькими светодиодами (LED) через USB. Я использовал его для отображения статуса моего интернет-соединения, видео-рекордера (VDR) и предупреждения о малом значении свободного дискового пространства. Вы можете использовать его для своих целей и программ.

USB LED Fader

Управление LED происходит с использованием ШИМ (широтно-импульсной модуляцией). Если кратко то ШИМ позволяет не просто включать-выключать LED, а дает возможность устанавливать любую яркость LED. В устройстве предусмотрено некоторое количество "волновых форм" (т.е. различных эффектов для LED). Каждый LED может отображать несколько разновидностей форм синусоиды или пилы, без какого-либо взаимодействия с внешним устройством (хостом или компьютером).

Каждый LED может управляться отдельно и отображать свой световой эффект.

Вы можете назначить три разных режима световых форм для каждого LED. Первые два (0 и 1) — неизменяемые. Они периодически меняются, пока не будет назначено что-нибудь другое. Третий режим (2) отображается один раз; впоследствии устройство возвращается к периодическому отображению первых двух режимов.

Режим описывается тремя параметрами: световой эффект, продолжительность и количество повторений перед его переходом в следующий режим.

В данной версии USB LED Fader’а предусмотрено управление 4 -мя LED. Количество LED можно легко изменить от одного до восьми. Я не тестировал устройство с более чем 4-мя LED, но могу предположить, что могут возникнуть проблемы с нагрузкой на USB-порт.

Для сборки и работы устройства требуются три вещи: схема, прошивка для микроконтроллера ATmega8 и Linux-клиент командной строки.

Данный проект базируется на примере PowerSwitch от Objective Development. От Objective Development используется только USB-драйвер для микроконтроллеров Atmel AVR. В USB-драйвере от Objective Development реализована поддержка стандарта USB 1.1 (низкая скорость обмена данными) для использования с недорогими микроконтроллерами Atmel AVR, такими как ATtiny2313 и другими. Особенности и ограничения смотрите в файле "firmware/usbdrv/usbdrv.h".

Схема USB LED Fader

Установка ПО описана в документации к устройству (см. ниже файл).

Подсоедините устройство к USB порту компьютера. Все LED должны моргнуть, это означает, что устройство прошло инициализацию.

Используйте командную строку для ввода команд:
usb-led-fader status
usb-led-fader set <ledId> <waveId> <waveformId> <periodDuration> <repetitionCount>
usb-led-fader clear <ledId>
usb-led-fader reset
usb-led-fader show <waveformId>
usb-led-fader test

Команда set позволяет устанавливать требуемые параметры.

Параметры:
ledId: 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 будет оставаться 1 секунду, произойдет одно повторение, после чего устройство перейдет к следующему режиму. Но т.к. следующий режим мы не описали, то LED будет постоянно отсаваться в данном режиме.

Далее, установим второй режим для LED, который будет немного ярче:
Команда: usb-led-fader set 0 1 25 10 1
Это режим 1, для LED под номером 0. Шаблон 25 — это константа уровня яркости. После установки второго режима, будет происходить чередование между режимом 0 и 1, поскольку длительность и число повторений одинаковы. Различается только яркость свечения.

Устанавливаем третий режим для LED.
Команда: usb-led-fader set 0 2 36 20 5
Шаблон 35 — синусоидоподобный сигнал, начинается плавный fade-эффект.Один период fade-эффекта составляет 2 секунды, повторяется 5 раз. После отработки данного режима, устройство вернется к чередованию между режимом 0 и 1, а этот режим сбросится.

Установка нескольких режимов одной командой: usb-led-fader set 0 0 15 10 1 0 1 25 10 1 0 2 36 20 5
Первый LED сначала будет работать по шаблону синусоиды 5 раз, а затем перейдет к чередованию между первым и вторым режимом с двумя уровнями яркости, период — 1 сек.

Очистка первого LED.
Команда: usb-led-fader clear 0
Очищает все 3 режима для первого LED.

Сброс устройства.
Команда: usb-led-fader reset
Все 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
Данная команда посылает множество пакетов к устройству. Устройство возвращает их, а клиент смотрит различия между отосланными и принятыми данными.

Скачать документацию, прошивки, программы и т.п.

Оригинал на английском языке (перевод Колтыков А.В для сайта cxem.net)

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит ATmega8 1
D1, D2 Стабилитрон 3.6 В 2
С1 Конденсатор 0.1 мкФ 1
С2 Электролитический конденсатор 10 мкФ 1
С3, С4 Конденсатор 22 пФ 2
R1 Резистор 2.2 кОм 1
R2 Резистор 4.7 кОм 1
R4, R5 Резистор 68 Ом 2
R6-R9 Резистор 470 Ом 4
Q1 Кварцевый резонатор 12 МГц 1
LED1 Светодиод Синий 1
LED2 Светодиод Зеленый 1
LED3 Светодиод Желтый 1
LED4 Светодиод Красный 1
X1 Разьем USB 1
J1 Разьем для подключения программатора ISP 1