Содержание
- 1 Ардуино и адресная светодиодная лента
- 2 Программа и скетч мигающего светодиода
- 3 GPIO
- 4 Управление светодиодом
- 5 Резюмируя
- 6 Основные теоретические вопросы
- 7 Область применения
- 8 ОСОБЕННОСТИ
- 9 Немного теории
- 10 Подготовка Arduino IDE и прошивка
- 11 Как устроен RGB-светодиод и его назначение
- 12 ОГРАНИЧЕНИЕ ТОКА (ЯРКОСТИ)
- 13 Как управлять светодиодом на Ардуино
Ардуино и адресная светодиодная лента
Этот проект – простой способ начать работу, но идеи, которые он охватывает, могут быть расширены для действительно эффектного освещения. С помощью всего лишь нескольких компонентов вы можете создать свой собственный восход солнца. Если у вас есть стартовый комплект с Arduino, вы можете использовать любую кнопку или датчик для запуска светодиодов при входе в комнату, например:
Теперь, когда мы рассмотрели схему с обычной светодиодной лентой, перейдем к адресным светодиодным лентам SPI RGB лента.
Светодиодная лента Ардуино – Яркие идеи.
Эти ленты требуют меньшего количества компонентов для запуска, и есть некоторая свобода в отношении именно того, какие значения компонентов вы можете использовать. Конденсатор в этой цепи гарантирует, что светодиоды 5v получают постоянный источник питания. Резистор становится гарантом того, что сигнал данных, полученный от Arduino, не загружен всяческими помехами.
Вам понадобится:
● Светодиодная лента 5v WS2811/12/12B; Все три модели имеют встроенные микросхемы и работают одинаково.
● 1 x Arduino Uno или аналогичная совместимая плата;
● 1 x резистор 220-440 Ом;
● 1 x конденсатор microFarad 100-1000 (все, что между этими двумя значениями, отлично подойдет);
● Макет и монтажные провода;
● Блок питания 5 В.
Настройте схему, как показано на рисунке:
Обратите внимание, что конденсатор должен быть правильной ориентации. Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора
На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно
Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора. На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно.
Во-первых, убедитесь, что ваша плата может работать с 5 В, прежде чем присоединить ее к источнику питания. Почти все платы работают на 5V через USB-порт, но штыри питания на некоторых могут иногда пропускать регуляторы напряжения и превращать их в поджаренные тосты.
Кроме того, рекомендуется убедиться, что несколько отдельных источников питания не подключены к Arduino – отсоединяйте USB-кабель всякий раз, когда используете внешний источник питания.
Светодиодная лента Ардуино – Бегущий огонь или световая волна
Чтобы безопасно запрограммировать нашу плату, отсоедините линию VIN от линии электропередач. Вы подключите ее позже обратно.
Присоедините свой Arduino к компьютеру и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный в меню «Сервис»> «Сервис и инструменты»> «Порт».
Мы будем использовать библиотеку FastLED для тестирования нашей установки. Вы можете добавить библиотеку, нажав на Эскиз> Включить библиотеку> Управление библиотеками и поиск FastLED. Нажмите «Установить», и библиотека будет добавлена в среду IDE.
В разделе «Файл»> «Примеры»> «FastLED» выберите эскиз DemoReel100. В этом эскизе задействованы различные эффекты, которые можно сделать с помощью светодиодных полос WS2812, и невероятно легко настроить.
Все, что вам нужно изменить, — это переменная DATA_PIN, чтобы она соответствовала значку 13 и переменной NUM_LEDS для определения количества светодиодов, находящихся в полосе, которую вы используете. В этом случае я применяю только небольшую линию из 10 светодиодов, вырезанных из более длинной полосы.
Используйте большее количество для красивейшего светового шоу!
Загрузите эскиз на свою плату, отсоедините USB-кабель и включите источник питания 5 В.
Наконец, подключите VIN Arduino к линии электропередач и наслаждайтесь представлением.
Светодиодная лента Ардуино – Безграничные возможности
Демо-эскиз демонстрирует некоторые из многих возможных комбинаций эффектов, которые могут быть достигнуты с помощью светодиодных лент. Наряду с тем, что они являются украшением интерьера, их также можно использовать для практических целей. Хорошим проектом будет создание вашей собственной атмосферы для медиацентра или рабочего места.
Хотя эти полосы определенно функциональнее, чем SMD5050, пока не списывайте со счетов стандартные 12-вольтовые светодиодные полосы. Они являются непревзойденными с точки зрения цены. Плюсом будет то, что существует огромное количество приложений для светодиодных лент.
Учиться работать со светодиодными лентами — хороший способ познакомиться с базовым программированием на Arduino, но лучший способ учиться — изменять коды. Побалуйтесь с приведенным выше кодом и посмотрите, что вы можете сделать! Если все это слишком сложно для вас, подумайте о проектах Arduino для начинающих.
Программа и скетч мигающего светодиода
Давайте теперь рассмотрим программу, которую мы загрузили из примеров и проанализируем.
Пример программы мигалки Blink
Во-первых, давайте пока уберем большой блок комментарий – они обозначены в Arduino IDE серым цветом. На данном этапе они немного мешают нам, хотя они крайне важны и вы всегда должны писать комментарии к своим программам.
Программа Blink без комментариев
Если вы обратите внимание на блок loop, то именно в нем и сосредоточены наши команды, управляющие светодиодом:
Функции setup и loop в коде программы Blink
digitalWrite – это название функции, которая отвечает за подачу напряжения на пин. Подробнее о ней можно прочитать в отдельной статье о digitalWrite.
LED_BUILDIN – это название внутреннего светодиода. В большинстве плат за этим названием прячется цифра 13. Для плат Uno, Nano можно смело писать 13 вместо LED_BUILDIN.
HIGH – условное название высокого уровня сигнала. Включает светодиод. Можно заменить цифрой 1.
LOW – условное обозначение низкого уровня сигнала. Выключает светодиод. Можно заменить цифрой 0.
delay – функция, которая останавливает выполнение скетча на определенное время. Крайне нежелательно использовать ее в реальных проектах, но в нашем простом примере она отработает замечательно. В скобках мы указываем цифру – это количество микросекунд, которые нужно ждать. 1000 – это 1 секунда. Подробнее можно прочитать в нашем материале о delay() .
// LED_BUILTIN - встроенная константа, определяющая номер пина. В Arduino Uno и Nano это 13 пин. void setup() { pinMode(LED_BUILTIN, OUTPUT); // Установка пина в режим OUTPUT } // Этот блок команд выполняется постоянно void loop() { digitalWrite(LED_BUILTIN, HIGH); // Включение светодиода delay(1000); // Задержка digitalWrite(LED_BUILTIN, LOW); // Выключение светодиода delay(1000); // Задержка // Когда программа дойдет до этого места, она автоматически продолжится сначала }
Как только программа дойдет до конца, контроллер перейдет в начало блока loop и будет выполнять все команды заново. И так раз за разом, целую вечность (пока есть свет). Наш светодиод мигает без остановки.
Проект “Маячок” с мигающим светодиодом
В этом проекте мы с вами практически повторим предыдущий, но при этом добавим самую настоящую схему. Подключим светодиод и токоограничивающий резистор. Чтобы не повторяться, отправим вас за подробным описанием в статью о правильном подключении светодиода к плате Ардуино.
Вам понадобится:
- Плата Arduino Uno или Nano
- Макетная плата для монтажа без пайки
- Резистор номиналом 220 Ом
- Светодиод
- Провода для соединения
Сложность: простой проект.
Что мы узнаем:
- Как подключить светодиод к ардуино.
- Повторим процедуру загрузки скетча в микроконтроллер.
Для монтажа элементов мы будем использовать макетную плату. Если вы еще не очень хорошо понимаете, что это такое, то рекомендуем предварительно ознакомиться с отдельной статьей, посвященной макетным платам.
Соедините все элементы согласно следующей схемы для Arduino UNO. Для Arduino Nano светодиод подключается по той же схеме – к пину 13.
Схема подключения мигающего светодиода к Ардуино
Если вы не меняли программу с предыдущего шага, то можно считать, что все сделано. Подключаем плату к компьютеру – светодиод должен немного помигать хаотично, а затем с точно установленным периодом.
Если вы еще не загружали программу, то вам надо повторить ту же последовательность действий, что и для работы со встроенным светодиодом. Загружаем пример, затем программу в контроллер и наблюдаем за результатом.
Попробуйте внести изменения в программу. Сделайте так, чтобы маячок мигал медленней и быстрее (чаще). Добейтесь того, чтобы частота мигания стала такой, что мигание света стало бы незаметным.
GPIO
Начнем с пинов, которых больше всего, это GPIO, с англ. General Purpose Input-Output, входы-выходы общего назначения, на плате они подписаны как D0–D13 и A0–A5. По картинке распиновки они называются PD*, PB* и PC*, (вместо звёздочки – цифра) отмечены тёмно-бежевым цветом. Почему “официально” они называются PD/PB/PC? Потому что пины объединены в пОрты по несколько штук (не более 8), на примере Нано есть три порта: D, B и C, соответственно пины так и подписаны: PD3 – Port D 3 – третий выход порта D. Это цифровые пины, способные выдавать логический сигнал (0 или VCC) и считывать такой же логический сигнал. VCC это напряжение питания микроконтроллера, при обычном использовании обычной платы Ардуино это 5 Вольт, соответственно это 5 вольтовая логика: 0V – сигнал низкого уровня (LOW), 5V – высокого уровня (HIGH). Напряжение питания микроконтроллера играет очень большую роль, об этом мы ещё поговорим. GPIO имеют несколько режимов работы: вход (INPUT), выход (OUTPUT) и вход с подтяжкой к питанию встроенным в МК резистором на 20 кОм (INPUT_PULLUP). Подробнее о режимах поговорим в отдельном уроке.
Все GPIO пины в режиме входа могут принять сигнал с напряжением от 0 до 5 вольт (на самом деле до 5.5 вольт, согласно даташиту на микроконтроллер). Отрицательное напряжение или напряжение, превышающее 5.5 Вольт приведёт к выходу пина или даже самого МК из строя. Напряжение 0-2.5 вольта считается низким уровнем (LOW), 2.5-5.5 – высоким уровнем (HIGH). Если GPIO никуда не подключен, т.е. “висит в воздухе”, он принимает случайное напряжение, возникающее из за наводок от сети (провода 220в в стенах) и электромагнитных волн на разных частотах, которыми пронизан современный мир.
GPIO в режиме выхода (OUTPUT) являются транзисторными выходами микроконтроллера и могут выдать напряжение 0 или VCC (напряжение питания МК). Стоит отметить, что микроконтроллер – логическое, а не силовое устройство, его выходы рассчитаны на подачу сигналов другим железкам, а не на прямое их питание. Максимальный ток, который можно снять с GPIO выхода ардуино – 40 мА. Если попытаться снять больше – пин выйдет из строя (выгорит выходной транзистор и всё). Что такое 40 мА? Обычный 5мм одноцветный светодиод потребляет 20 мА, и это практически единственное, что можно питать напрямую от Ардуино. Также не стоит забывать о максимальном токе со всех пинов, он ограничен 200 мА, то есть не более 10 светодиодов можно запитать от платы на полную яркость…
Управление светодиодом
Подключив светодиод к Ардуино, мы получаем очень удобный инструмент для управления им. Ведь нам не нужно ничего включать или выключать физически. Достаточно просто указать в программе нужные инструкции, чтобы сама плата подавала напряжение на нужные пины, включая или выключая наш светодиод. Единожды загрузив программу в память контроллера, мы заставим его выполнять нужный нам алгоритм каждый раз, когда будет подключено питание.
Включение и выключение светодиода в Ардуино
Включение светодиода произойдет в тот момент, когда мы подадим на пин, к которому он подключен, высокий уровень сигнала (напряжение). За это в Ардуино отвечает функция digitalWrite со вторым параметром HIGH. Например, для светодиода, подключенного к пину 12 команда будет выглядеть так: digitalWrite (12, HIGH);
Чтобы выключить светодиод, мы используем ту же команду, но с параметром LOW: digitalWrite(12, LOW). Если мы вызовем первую команду, а потом чрез какой-то промежуток времени вторую, то у нас светодиод сначала загорится, а потом потухнет. Зациклив включение и выключение, мы получим постоянно включающийся и выключающийся мигающий маячок.
Бывают ситуации, когда светодиод горит не очень ярко и непонятно, что тут пошло не так. На самом деле нужно в первую очередь проверить, не забыли ли вы сконфигурировать пин в качестве выходного. Это делается добавлением функции pinMode (обычно в блоке setup()). Для нашего варианта функция будет выглядеть так: pinMode(12, OUTPUT);
Резюмируя
Теперь по сути дела: датчики, их куча кучная, измерять можно ну просто всё, что вообще измеряется. Электроника: напряжение, ток, сопротивление, работа с переменным током, поля. Параметры микроклимата: температура, влажность, давление, содержание газов, скорость ветра, освещенность, что угодно. Интересных модулей тоже очень много: Bluetooth, сотовая связь, GPS, дисплеи различных типов и размеров, датчики присутствия, как ИК, так и микроволновые, модули для беспроводной связи ардуинок и многое другое.
Можно управлять абсолютно любой железкой, которая выполняет свою функцию просто при подаче питания: лампочка, светодиодная лента, электронагреватель, мотор или любой электропривод, электромагнит, соленоид-толкатель, и это все с любым напряжением питания. Но тут нужно кое что понять: Ардуино (точнее микроконтроллер) – логическое устройство, то есть по-хорошему она должна только отдавать команды другим устройствам, или принимать их от них. Это я к тому, что напрямую от ардуино не работают ни лампочки, ни моторчики, ни нагреватели, ни-хуче-го. Максимум – светодиод. С пониманием этого идём дальше. Чтобы ардуино включила или выключила (подала питание) на другое устройство, нужно устройство – посредник, например реле или транзистор. Ардуино управляет реле, а реле в свою очередь включает любую нужную нагрузку с любым напряжением питания и все такое, подробнее об этом поговорим отдельно.
Как суть всего выше написанного – возможности Ардуино по подключению и управлению различными железками практически безграничны, можно воплотить любую идею, даже самую безумную. Датчики что то измеряют, исполнительные устройства что то контролируют, в это же время ведётся отсылка данных куда-нибудь, что-то отображается на дисплее и контролируется при помощи кнопок. Романтика!
У меня в каталоге ссылок на Ардуино-компоненты можно найти практически все существующие датчики, модули и прочие железки для Ардуино, и практически у каждого есть ссылка на статью с примером и библиотекой. Пользуйтесь!
Основные теоретические вопросы
Вольт-амперная характеристика (сокр. ВАХ) – это график отображающий зависимость величины тока протекающего через любой прибор от напряжения, приложенного к нему. Простая и очень ёмкая характеристика для анализа нелинейных компонентов. С её помощью можно выбрать режимы работы, и определить характеристики источника питания для прибора.
Взгляните на пример линейной и нелинейной ВАХ.
График под номером 1 на рисунке отображает линейную зависимость тока от напряжения, такую имеют все приборы резистивного характера, например:
- Лампа накаливания;
- обогреватель;
- резистор (сопротивление);
График номер 2 – это ВАХ характерная для p-n переходов диодов, транзисторов и диодов.
Область применения
Светодиоды, функционирующие в мигающем ритме, применяются в различных областях:
- В развлекательной сфере, в игрушках, для украшения декора, в качестве гирлянд.
- Как индикация в бытовых и промышленных приборах.
- Светосигнализирующих устройствах.
- В элементах рекламы, вывесках.
- Информационных табло.
ОСОБЕННОСТИ
Данная библиотека нужна для проектов с лентой, в которых критичен объём занимаемой оперативной памяти: его можно уменьшить в 1.5 и 3 раза по сравнению с обычными библиотеками, а также вообще отказаться от динамического буфера и управлять лентой любой длины даже с ATtiny!! Библиотека написана очень просто, используемые в ней алгоритмы и решения очень прозрачны и могут кому-нибудь пригодиться. Единственный минус: инструменты для генерации и изменения цвета работают медленнее, чем в FastLED, поэтому для быстрых красивых эффектов на большой ленте/матрице придётся подключать фастлед для быстрой математики.
Немного теории
Я думаю все знают, что свет – это поток фотонов, но в то же время он является электромагнитной волной, излучением. Человеческий глаз воспринимает очень узкий диапазон этого излучения: приблизительно от 390 до 790 ТГц (террагерц), так называемое видимое излучение или видимый свет. “Ориентироваться” в этом диапазоне электромагнитного излучения принято в обратной величине – длине волны, измеряемой в данном случае в нанометрах (нм): человеческий глаз видит излучение в диапазоне от ~400 нм (фиолетовый) до ~800 нм (красный). Между синим и красным есть ещё один важный цвет – зелёный:
Красный (Red, R), зелёный (Green, G) и синий (Blue, B) являются основными цветами: смешивая эти три цвета в разных пропорциях можно получить плюс-минус все остальные цвета.
Этот наглядный “двухмерный” случай с кругами вы тоже скорее всего видели. Если раскручивать тему дальше, то можно задаться интенсивностью каждого цвета и получить итоговый цвет как функцию от трёх переменных, или же трёхмерное цветовое пространство RGB. Если интенсивности всех трёх цветов равны нулю – получится чёрный цвет, если все три максимальны – белый, а всё что между – оттенки:
На картинке выше интенсивность каждого цвета представлена диапазоном 0-255. Знакомое число, не правда ли? Всё верно, в большинстве применений диапазон каждого цвета кодируется одним байтом, потому что это удобно с точки зрения программирования и достаточно с точки зрения глаза: три цвета – три байта – 256*256*256 == 16.8 миллионов оттенков. Да, именно эта цифра часто фигурирует в рекламах смартфонов и телевизоров, и именно столько оттенков мы можем абсолютно не напрягаясь получить при использовании Arduino и RGB светодиодов, о чём и поговорим в этом уроке.
Подготовка Arduino IDE и прошивка
- Загружаем и устанавливаем Arduino IDE.
- Распаковываем скачанное в папку с библиотеками Arduino IDE (обычно это C:\Users\<Текущий пользователь>\Documents\Arduino\).
- Копируем полученный код в Arduino IDE.
- В примере вводим фактическое название нашей WiFi-сети и пароль.
В примере также присутствует функция вида:
BLYNK_WRITE(V1) { int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable // process received value }
Здесь:
- BLYNK_WRITE(V1) указывает, что функция выполнится при изменении виртуального пина 1,
- int pinValue = param.asInt(); объявляет переменную pinValue и загружает в неё текущее состояние виртуального пина (0 — пин выключен, 1 — пин включен).
Всего можно использовать 256 виртуальных пинов (V0-V255) — это огромный запас на все случаи жизни. Например, виртуальный пин 1 принимает значение 1 — подаём питание на физический пин NodeMcu и включаем этим реле, или виртуальный пин 2 принимает значение от 0 до 255 — изменяем ШИМ-сигнал, регулируем яркость (либо цвета RGB) диодной подсветки в 255 градациях яркости.
А теперь заставим нашу функцию включать физический пин D4 NodeMcu (в функции будем использовать событие виртуального пина 0, просто для удобства):
BLYNK_WRITE(V0) { int pinValue = param.asInt(); digitalWrite('''D4''', pinValue); }
Чтобы управлять этим выводом, в основной функции void setup() обязательно установим пин D4 как выход: pinMode(D4, OUTPUT);
В итоге получаем такой код для прошивки:
#define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> char auth[] = "Мой токен"; //тут токен из e-mail char ssid[] = "YourNetworkName"; //Название WiFi-сети char pass[] = "YourPassword"; //Пароль BLYNK_WRITE(V0) //функция, отслеживающая изменение виртуального пина 0 { int pinValue = param.asInt(); //переменная текущего состояния виртуального пина digitalWrite(D4, pinValue); //задаем значение на физическом пине NodeMcu D4 равное значению виртуального пина 0 } void setup() //основная функция, выполняется один раз при подаче питания на микроконтроллер { Serial.begin(9600); //открываем серийный порт, чтобы видеть как проходит подключение к серверу blynk pinMode(D4, OUTPUT); //объявляем D4 "выходным" пином Blynk.begin(auth, ssid, pass); //авторизируемся на сервере } void loop() //основная функция, которая выполняется постоянно по кругу { Blynk.run(); //запускаем работу blynk. В этом примере - постоянную проверку виртуального пина 0 }
Заливаем прошивку в NodeMcu.
Так как пример предполагает использование различных плат, то пропустим тонкости настройки Arduino IDE для работы с NodeMcu; к тому же подобную информацию найти нетрудно.
Наш выключатель готов к работе!
Также данную схему можно использовать и для включения ПК (имитации нажатия кнопки включения). Для этого параллельно пинам кнопки Power (на материнской плате пины POWER SW) нужно подключить линии L и L1 (указанные на схеме !!!НЕ 220В!!!) и немного изменить скрипт, чтобы при изменении виртуального пина реле включалось на короткий промежуток времени, имитируя короткое нажатие.
В скрипте, в блоке:
BLYNK_WRITE(V0) //функция, отслеживающая изменение виртуального пина 0 { int pinValue = param.asInt(); //переменная текущего состояния виртуального пина if (pinValue = 0){ digitalWrite(D4, HIGH); //если работает неверно, то изменить на digitalWrite(D4, LOW); а ниже наоборот delay (100); // если задержка мала, можно увеличить digitalWrite(D4, LOW); //ДА-ДА, ИМЕННО ТУТ НИЖЕ. Если работает неверно, то изменить на digitalWrite(D4, HIGH); } }
мы добавили задержку delay (100); в 100 мс и выключили после нее физический пин D4 — digitalWrite(D4, LOW);
Как устроен RGB-светодиод и его назначение
Светодиодная лента состоит из 3 цветных кристаллов и 4 выходов: 12 (общий вывод), R (Red), G (Green), B (Blue). Основные комплектующие помещены в пластиковый корпус. Также в некоторых моделях RGB LED Arduino присутствуют встроенные резисторы. Они подключены к цветным выходам. Анодные и катодные электроды обладают самыми длинными выводами.
Одной из самых современных моделей RGB Ардуино является адресная светодиодная лента. Она состоит из диодов и контроллера. В это устройство по умолчанию встроены 3 полевых транзистора, что позволяет регулировать цвет светодиодов по отдельности.
Устройство светодиоида.
Для питания резисторов и выводов нужно подключить адресную ленту к следующим приборам:
- Powerbank 5V: лента подсоединяется к данному устройству при помощи USB-штекеров. Емкость Powerbank 5V составляет 3350 мА*ч, что позволяет питать светодиоды током с силой 3А.
- Батарейки АА: используются в количестве 3 шт. Общая емкость этих приборов составляет 180 мА*ч. Они подают ток с напряжением до 5,5 В. Рекомендуется использовать батарейки AA, изготовленные из лития или апкалина.
- Никелевые аккумуляторы: имеют напряжение до 1,4 В. Для питания RGB Arduino требуется не менее 4 аккумуляторов из никеля. Емкость сборки составляет 2700 мА*ч.
- Литиевые аккумуляторы: имеют напряжение 4,2 В. В процессе эксплуатации значение этого показателя снижается до 3 В. Литиевые аккумуляторы позволяют сохранять полную яркость светодиодов. Они питают диоды током с силой до 2 А.
В зависимости от способа подачи электрического тока светодиоды будут гореть разными цветами. Если подать питание на 3 цветных светодиода одновременно, то кристаллы станут белыми. Для настройки цветовой гаммы Arduino RGB используются контроллеры с пультом управления. Они состоят из 3 полевых транзисторов и микропроцессора. Это приспособление позволяет настроить цветовую гамму светодиодов на дальнем расстоянии. Работа контроллеров с пультом управления обеспечивается при помощи скетчей, написанных в программной среде Ардуино.
Выделяют 2 основные модели RGB LED Arduino:
- WS2811: светодиоды питаются от чипа WS2811, расположенного отдельно от RGB-ленты. Питание устройства составляет 12 В.
- WS2812b: представляет собой ленту с напаянными светодиодами. В диоды встроены чипы WS2812b. Они позволяют менять окрас светодиодов по отдельности. Питание ленты WS2812b составляет 5 В.
Основными преимуществами RGB LED Arduino являются простота конструкции и высокий КПД. Эти приспособления активно используются при изготовлении осветительных приборов и декоративных подсветок. Также технология RGB нашла применение в трехмерной графике и WEB-разработке.
ОГРАНИЧЕНИЕ ТОКА (ЯРКОСТИ)
В библиотеке есть возможность автоматически ограничить яркость ленты по установленному току потребления при помощи , где – ток в миллиамперах. В самой библиотеке ток каждого типа ленты уже задан, но я измерял его для своих лент, и он может отличаться от лент, купленных в другом магазине. Для наиболее точной работы ограничения нужно настроить ток ленты для своей ленты, задав в максимальный (белый, 255) ток одного светодиода в миллиамперах и – холостой ток (светодиод выключен) в мкА.
oneLedMax = (ток ленты с одним горящим) - (ток выключенной ленты) oneLedIdle = (ток выключенной ленты) / длина ленты * 1000
Берём кусок ленты, например WS2818, 180 диодов (3 в каждом секторе, 60 секторов):
- 160 мА когда горит один сектор из 60
- 114 мА когда лента не горит
Так как активный ток равен холостому + активному, 160-114 = 46 чистых мА на сектор имеем 114 / 60 = 1.9 мА холостых на сектор
strip.oneLedIdle = 1900; // задаём в мка strip.oneLedMax = 46; // задаём в ма
Берём бухту ленты, например WS2812, 60*5м = 300 диодов
- 102 мА когда горит один диод
- 74 мА когда лента не горит
Так как активный ток равен холостому + активному, 102-74 = 28 чистых мА на диод имеем 74 / 300 = 0.24 мА холостых на диод
Как управлять светодиодом на Ардуино
Управление RGB-лентой производится с помощью настройки диапазона сигналов широтно-импульсной модуляции, позволяющих регулировать силу электротока. Сигналы широтно-импульсной модуляции кодируются цифрами в диапазоне от 0 до 255. Этот метод кодировки позволяет получить на РГБ Ардуино 16,8 млн различных цветных оттенков.
Для управления RGB-светодиодами требуются следующие комплектующие:
- контроллер Arduino UNO R3, Nano или Mega.
- RGB-диоды;
- 3 резистора с сопротивлением 220 Ом;
- проводные механизмы “плюс-минус”.
Контроллер UNO R3 устройства Arduino.
При подключении светодиода к Ардуино требуется соединить провод “минус” с пином заземления GND. Синий диод подключается к порту Pin13, зеленый — к Pin 12, красный — к Pin 11.
После подсоединения основных компонентов нужно открыть программную среду Arduino IDE, подключить к персональному компьютеру плату при помощи кабеля USB и загрузить на микроконтроллер следующий скетч:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
int red_light_pin= 11; int green_light_pin = 10; int blue_light_pin = 9; void setup() { pinMode(red_light_pin, OUTPUT); pinMode(green_light_pin, OUTPUT); pinMode(blue_light_pin, OUTPUT); } void loop() { RGB_color(255, , ); // Red delay(1000); RGB_color(, 255, ); // Green delay(1000); RGB_color(, , 255); // Blue delay(1000); RGB_color(255, 255, 125); // Raspberry delay(1000); RGB_color(, 255, 255); // Cyan delay(1000); RGB_color(255, , 255); // Magenta delay(1000); RGB_color(255, 255, ); // Yellow delay(1000); RGB_color(255, 255, 255); // White delay(1000); } void RGB_color(int red_light_value, int green_light_value, int blue_light_value) { analogWrite(red_light_pin, red_light_value); analogWrite(green_light_pin, green_light_value); analogWrite(blue_light_pin, blue_light_value); } |
После компиляции этого программного кода кристаллы загорятся радужными цветами. Для настройки гаммы трехцветного светодиода требуется изменить в программном коде значение переменных red, blue и green. Чтобы все диоды стали белыми, нужно установить все значения цветов 255.
Белый светодиод.
Команды передаются последовательно между портами. Движение ШИМ-сигналов указано в виде стрелок на светодиодной ленте Ардуино. 2 резистора 220 Ом требуются для предотвращения выгорания портов платы или возникновения короткого замыкания.
Перед тем как подключить RGB-светодиод к Arduino, нужно измерить расстояние между лентой и микроконтроллером. Если комплектующие находятся на большой дистанции, то необходимо приобрести провода длиной не менее 15 см. Для защиты механизмов от наводок рекомендуется скрутить проводные устройства. Это обеспечит стабильную работу протокола связи.
В библиотеке GyverRGB присутствуют программные конструкции, выполняющие следующие функции:
- Установка цвета и оттенков в формате HEX.
- Контроль полярности широтно-импульсной модуляции.
- Настройка яркости светодиодов.
- Регулировка частоты коррекции ШИМ.
- Ограничение подачи электрического тока.
- Плавная смена цветовой гаммы по мере разряда аккумулятора.
Библиотека GyverRGB поддерживает работу с RGB-диодами, одновременно подключенными к плате Arduino. В нее встроена матрица коррекции LUT, позволяющая изменять цветовую гамму при минимальном сигнале ШИМ. В библиотеке содержится свыше 1530 значений для инструмента ColorWheel.
LED-диоды.
Если после настройки основных параметров программной среды светодиод не загорелся, то нужно проверить наличие драйверов для платы Arduino на компьютере.
Для этого нужно выполнить следующий алгоритм действий:
- Зайти в диспетчер устройств и найти графу с наименование микроконтроллера Ардуино.
- Нажать на вкладку “Сведения”.
- Из открывшегося списка выбрать графу “ИД-оборудования”.
- Скопировать идентификационный номер устройства, находящийся в текстовом поле.
После этого необходимо зайти в интернет и вставить в поисковую строку скопированный текст. В браузере откроется большое количество веб-страниц с ссылками для скачивания файлов. Загружать драйвера рекомендуется только на официальных сайтах производителей программного обеспечения. В противном случае можно скачать файл, содержащий вирусные программы. Он может привести к поломке персонального компьютера или утере персональных данных пользователя.