Как управлять светодиодами с компьютера

Обновлено: 07.07.2024

Всем привет. Сегодня расскажу как создать свой режим RGB подсветки в игровом компьютере, если у вас в ПК используются ленты и кулеры с адресными светодиодами, и как управлять с помощью жестов и даже музыки.

У меня материнская плата Asrock AB350 Pro не предназначена для управления подсветкой ARGB кулеров и светодиодных лент и вот как раз для таких ситуаций придумали отдельный контроллер. Поговорим сегодня про Codi6 от Gelid Solutions, который можно самому программировать за пару минут.

Технические характеристики

  • 6 независимых каналов управления ARGB подсветкой
  • 6 PWM разъемов подключения вентиляторов
  • Программирование на Arduino и наличие семплов в свободном доступе

Разбор работы Codi6 проведем на примере двух вентиляторов Radiant-D, которые имеют по 9 адресных светодиодов. У меня таких вентиляторов с подсветкой два. Дополнительно для управления подсветкой к контроллеру можно подключать различные сенсоры и датчики и у меня есть микрофон и дальномер.


Игровой вентилятор с подсветкой Radiant-D имеет размер 120мм. К основным техническим характеристикам отнесем наличие двойного шарико-подшипника, 9 ARGB светодиодов, PWM управление, бесшумный мотор. Частота вращения регулируется от 500 до 2000 оборотов в минуту. На обратной стороне коробки приведены более полные данные.



В комплекте идет 4 винта для крепления игрового вентилятора и сама вертушка. Из вентилятора идет 2 кабеля: один для регулирования частоты вращения, а второй для управления подсветкой. Крыльчатка вентилятора имеет матовый молочный цвет и края с зубами. На обратной стороне вентилятора указаны рабочее напряжение 12В и ток в 0.35А.







Управлять вентиляторами будет Codi6. Это контроллер, который выполнен на базе Arduino Uno. Он может управлять и светодиодными лентами, но у меня их нет с ARGB светодиодами. Контроллер поставляется в небольшой коробке. На обратной стороне приведены основные характеристики, которые указаны в начале статьи.



Внутри коробки находятся:

С самой платы выведены все разъемы и готовы к подключению, а сама Arduino Uno находится в прозрачном акриловом корпусе. На корпусе платы имеется разъем для подключения к внешнему источнику питания за пределами компьютера. К примеру, взяли блок питания от какого-то зарядного устройства и подключили в розетку. Для сброса настроек есть красная кнопка. Еще на плате есть черная кнопка, которую можно программировать. В видео будет пример выполнения скетча(кода), когда режим свечения подсветки меняется при нажатии на эту кнопку. Так же вынесены разъемы для подключения внешних сенсоров и датчиков. То есть можно настроить подсветку в игровом компьютере в зависимости от температуры в корпусе, уровня шума или даже управлять жестами.




Я буду подключать микрофон и дальномер, но в комплекте они не идут. Codi6 состоит только из контроллера на базе Arduino Uno.


Инструкции в комплекте нет, поэтому переходим на сайт производителя.

Там все очень просто расписано даже с картинками и подключение занимает всего пару минут. Постараюсь очень коротко, чтобы не утомить. Подключаем контроллер проводами к материнской плате и Sata разъемом к блоку питания. Далее устанавливаем драйвер CH340 USB и устанавливаем Arduino IDE. Далее в Диспетчере устройств смотрим, на какой СОМ-порт установился наш контроллер. После этого запускаем Arduino IDE и там уже указываем наш СОМ-порт. И осталось всего лишь скачать библиотеку Fastled. Теперь можно самому написать код для управления подсветкой, а можно воспользоваться примерами с сайта производителя.


Настраивать подсветку из примера кода с сайта можно как хочешь. Можно, чтобы горели не все светодиоды, а только какое-то определенное количество. Можно отключить подсветку одного вентилятора, а второй чтобы сверкал. Это свободное поле для фантазии. С другой стороны теперь не скажешь, что RGB подсветка — это баловство. Таким нехитрым способом ребенка можно заинтересовать программированием. Конечно, если вы дружите с радиодеталями и паяльником, то такую плату сможете собрать и самостоятельно, но Codi6 является готовым продуктом для людей, которые не обладают особыми знаниями.


Пример работы подсветки с переключением режимов программируемой кнопкой и вообще как работают вентиляторы Radian-D можно в видео ниже. Там же показан принцип работы в зависимости от уровня громкости музыки. Ну и дальномер может регулировать подсветку при входе в комнату или когда подносите руку. Сам по себе Codi6 мне понравился, потому что очень легок в освоении и пару часов я провел очень интересно, узнавая что-то новое.

Естественно управлять можно не только светом, а так же любым другим прибором со своего компьютера или удаленно через интернет. Одним прибором или несколькими.


Итак, агрегат состоит из аппаратной и программной частей.



7. npn-транзистор типа КТ3117А или любой другой с нормальным коэфф. усиления;

9. разветвитель питания в ПК, если питать от ПК. Но можно и от другого источника напряжением 12 в.


Если мы будем подавать на пин D единицу, на нем будет появляться напряжение и в конечном итоге реле переключится, включив лампу.



Впаиваем плату в разрыв цепи нашей лампы; подключаем через lpt-удлинитель к соответствующему порту ПК; подключаем к питанию ПК через разветвитель питания 11; ну и саму лампу в 220 В.

Для оживления нашей лампы напишем программу на Delphi (первое что попалось под руки, переписать на C совсем не трудно, в программе буквально 3 строчки кода)

Исходник: /svetom/lamp_1.0.rar (эта программа умеет исключительно включать и отключать лампу по нажатию на клавишу).

Вы сможете включать лампу или любой другой светильник с компьютера!


Немного модернизировав программу, получаем второй исходник: /svetom/lamp_2.0.rar (эта программа следит за файлом, который может изменяться php-скриптом lamp2.php на локальном веб-сервере).


Теперь мы сможем включить нашу любимую лампу с любой точки планеты, где есть Интернет.


Похожие мастер-классы

Управление нагрузкой одним нажатием

Автоматическое включение и выключение с компьютера

Автоматическое включение и выключение с компьютера

Как сделать простейший преобразователь высокого напряжения из катушки зажигания и реле

Как сделать простейший преобразователь высокого напряжения из

Радио звонок и управление приборами на расстоянии

Особо интересное

Как удлинить обломленные провода в розетке

Как в разы увеличить тягу вентиляции в гараже или погребе естественным способом без вентилятора

Как в разы увеличить тягу вентиляции в гараже или погребе

Как сделать пресс для производства топливных брикетов из опилок

Как сделать пресс для производства топливных брикетов из опилок

Как удлинить обломленные провода в розетке

Как сделать вечный фонарик без батареек из шприца

Как легко отчистить желтизну на пластике при помощи дешевого аптечного средства

Как легко отчистить желтизну на пластике при помощи дешевого

«Сделай сам – своими руками» - сайт интересных самоделок, сделанных из подручных материалов и предметов в домашних условиях. Пошаговые мастер-классы с фото и описанием, технологии, лайфхаки - все, что нужно для рукоделия настоящему мастеру или просто умельцу. Поделки любой сложности, большой выбор направлений и идей для творчества.


Подключение светодиода

2.5 вольта, у синих, зелёных и белых

Мигаем

Мигаем плавно

Как насчёт плавного управления яркостью? Вспомним урок про ШИМ сигнал и подключим светодиод к одному из ШИМ пинов (на Nano это D3, D5, D6, D9, D10, D11). Сделаем пин как выход и сможем управлять яркостью при помощи ШИМ сигнала! Читай урок про ШИМ сигнал. Простой пример с несколькими уровнями яркости:

blank

Подключим потенциометр на A0 и попробуем регулировать яркость с его помощью:

Как вы можете видеть, все очень просто. Сделаем ещё одну интересную вещь: попробуем плавно включать и выключать светодиод, для чего нам понадобится цикл из урока про циклы.

Плохой пример! Алгоритм плавного изменения яркости блокирует выполнение кода. Давайте сделаем его на таймере аптайма.

Теперь изменение яркости не блокирует выполнение основного цикла, но и остальной код должен быть написан таким же образом, чтобы не блокировать вызовы функции изменения яркости! Ещё одним вариантом может быть работа по прерыванию таймера, см. урок.

Светодиод будет мигать не очень плавно: яркость будет нарастать слишком резко и практически не будет меняться. Связано это с тем, что человеческий глаз воспринимает яркость нелинейно, а мы управляем ей линейно. Для более плавного ощущения яркости используется коррекция по CRT гамме, которая переехала из этого урока в отдельный урок по миганию светодиодом по CRT гамме в блоке алгоритмов. Изучи обязательно!

Светодиодные ленты


Светодиодная лента представляет собой цепь соединённых светодиодов. Соединены они не просто так, например обычная 12V лента состоит из сегментов по 3 светодиода в каждом. Сегменты соединены между собой параллельно, то есть на каждый приходят общие 12 Вольт. Внутри сегмента светодиоды соединены последовательно, а ток на них ограничивается общим резистором (могут стоять два для более эффективного теплоотвода): Таким образом достаточно просто подать 12V от источника напряжения на ленту и она будет светиться. За простоту и удобство приходится платить эффективностью. Простая математика: три белых светодиода, каждому нужно по

3.2V, суммарно это 9.6V. Подключаем ленту к 12V и понимаем, что 2.5V у нас просто уходят в тепло на резисторах. И это в лучшем случае, если резистор подобран так, чтобы светодиод горел на полную яркость.

Подключаем к Arduino

Здесь всё очень просто: смотрите предыдущий урок по управлению нагрузкой постоянного тока. Управлять можно через реле, транзистор или твердотельное реле. Нас больше всего интересует плавное управление яркостью, поэтому продублирую схему с полевым транзистором: Конечно же, можно воспользоваться китайским мосфет-модулем! Пин VCC кстати можно не подключать, он никуда не подведён на плате.

Управление

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

Питание и мощность

Светодиодная лента потребляет немаленький ток, поэтому нужно убедиться в том, что выбранный блок питания, модуль или аккумулятор справится с задачей. Но сначала обязательно прочитайте урок по закону Ома! Потребляемая мощность светодиодной ленты зависит от нескольких факторов:

Лента всегда имеет характеристику мощности на погонный метр (Ватт/м), указывается именно максимальная мощность ленты при питании от номинального напряжения. Китайские ленты в основном имеют чуть меньшую фактическую мощность (в районе 80%, бывает лучше, бывает хуже). Блок питания нужно подбирать так, чтобы его мощность была больше мощности ленты, т.е. с запасом как минимум на 20%.

    Пример 1: нужно подключить 4 метра ленты с мощностью 14 Ватт на метр, лента может работать на максимальной яркости. 14*4 == 56W, с запасом 20% это будет 56*1.2

Важные моменты по току и подключению:

Видео

Данное устройство 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
Вернет подобный результат:

Здесь, параметры 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
Данная команда отображает форму волны:

Помните, что данные отображаются согласно длительности шаблона. Если вы захотите отобразить яркость (формы 0-31), длительность будет 1, т.е. отобразится только одна строка.

Тестирование устройства.
Команда: usb-led-fader test
Данная команда посылает множество пакетов к устройству. Устройство возвращает их, а клиент смотрит различия между отосланными и принятыми данными.

Читайте также: