Подключение светодиодной ленты arduino uno. Скетч для плавного мигания RGB светодиода. Скетч управления яркостью светодиодной ленты Arduino

06.05.2019

Ардуино идеально подходит для управления любыми устройствами. Микропроцессор ATmega с помощью программы-скетча манипулирует большим количеством дискретных выводов, аналогово-цифровых входов/выводов и ШИМ-контроллерами.

Благодаря гибкости кода микроконтроллер ATmega широко используется в модулях различной автоматики, в том числе на его основе возможно создать контроллер управления светодиодным освещением.

Принцип управления нагрузкой через Ардуино

Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.

Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете. Через аналоговый порт возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.

Синтаксис команд

Цифровой вывод:

pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных;
digitalWrite(12, HIGH); — подаём на дискретный выход 12 логическую единицу, зажигая светодиод.

Аналоговый вывод:

analogOutPin = 3; – задаём порт 3 для вывода аналогового значения;
analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В. Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение.

Способы управления светодиодами через Ардуино

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

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

Виды транзисторных ключей

  • Биполярный;
  • Полевой;
  • Составной (сборка Дарлингтона).
Способы подключения нагрузки
Через биполярный транзистор Через полевой транзистор Через коммутатор напряжения

При подаче высокого логического уровня (digitalWrite(12, HIGH);) через порт вывода на базу транзистора через цепочку коллектор-эмиттер потечет опорное напряжение на нагрузку. Таким образом можно включать и отключать светодиод.

Аналогичным образом работает и полевой транзистор, но поскольку у него вместо «базы» сток, который управляется не током, а напряжением, ограничительный резистор в этой схеме необязателен.

Биполярный вид не позволяет регулировать мощные нагрузки. Ток через него ограничен на уровне 0,1-0,3А.

Полевые транзисторы работают с более мощными нагрузками с током до 2А. Для ещё более мощной нагрузки используют полевые транзисторы Mosfet с током до 9А и напряжением до 60В.

Вместо полевых можно использовать сборку Дарлингтона из биполярных транзисторов на микросхемах ULN2003, ULN2803.

Микросхема ULN2003 и принципиальная схема электронного коммутатора напряжения:

Принцип работы транзистора для плавного управления светодиодной лентой

Транзистор работает как водопроводный кран, только для электронов. Чем выше напряжение, подаваемое на базу биполярного транзистора либо сток полевого, тем меньше сопротивление в цепочке эмиттер-коллектор, тем выше ток, проходящий через нагрузку.

Подключив транзистор к аналоговому порту Ардуино, присваиваем ему значение от 0 до 255, изменяем напряжение, подаваемое на коллектор либо сток от 0 до 5В. Через цепочку коллектор-эмиттер будет проходить от 0 до 100% опорного напряжения нагрузки.

Для управления светодиодной лентой arduino необходимо подобрать транзистор подходящей мощности. Рабочий ток для питания метра светодиодов 300-500мА, для этих целей подойдет силовой биполярный транзистор. Для большей длины потребуется полевой транзистор.

Схема подключения LED ленты к ардуино:

Управление RGB лентой с помощью Andurino

Кроме однокристальных светодиодов, Ардуино может работать и с цветными LED. Подключив выводы каждого цвета к аналоговым выходам Ардуино можно произвольно изменять яркость каждого кристалла, добиваясь необходимого цвета свечения.

Схема подключения к Arduino RGB светодиода:

Аналогично построено и управление RGB лентой Arduino:

Аrduino RGB контроллер лучше собирать на полевых транзисторах.

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

Скетч управления яркостью светодиодной ленты Arduino

int led = 120; устанавливаем средний уровень яркости

void setup() {
pinMode(4, OUTPUT); устанавливаем 4й аналоговый порт на вывод
pinMode(2, INPUT);

pinMode(4, INPUT); устанавливаем 2й и 4й цифровой порт на ввод для опроса кнопок
}
void loop(){

button1 = digitalRead(2);

button2 = digitalRead(4);
if (button1 == HIGH) нажатие на первую кнопку увеличит яркость
{
led = led + 5;

analogWrite(4, led);
}
if (button2 == HIGH) нажатие на вторую кнопку уменьшит яркость
{
led = led — 5;

analogWrite(4, led);
}

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

Модули управления Ардуино

Для создания полноценного драйвера управления светодиодной лентой можно использовать модули-датчики.

ИК-управление

Модуль позволяет запрограммировать до 20 команд.

Радиус сигнала около 8м.

Цена комплекта 6 у.е.

По радиоканалу

Четырёхканальный блок с радиусом действия до 100м

Цена комплекта 8 у.е.

Позволяет включать освещение еще при приближении к квартире.

Бесконтактное

Датчик расстояния способен по движению руки увеличивать и уменьшать яркость освещения.

Радиус действия до 5м.

Цена модуля 0,3 у.е.

Arduino - компьютерная платформа, используемая при построении простых систем автоматики, небольшая плата со встроенным микропроцессором и оперативной памятью. Управление светодиодной лентой через Arduino - один из способов ее применения.

Процессор ATmega управляет программой-скетчем, контролируя многочисленные дискретные выводы, аналоговые и цифровые входы/выходы, ШИМ-контроллеры.

Принцип действия Arduino

«Сердце» платы Arduino - микроконтроллер, к которому подключаются датчики, управляющие элементы. Заданная программа (называется «скетч») позволяет управлять электродвигателями, светодиодами в лентах и других осветительных приборах, даже используется для контроля над другой платой Arduino через протокол SPI. Контроль осуществляется при помощи пульта ДУ, Bluetooth-модуля или сети Wi-Fi.

Для программирования используется открытый исходный код на ПК. Для загрузки программ управления можно пользоваться USB-коннектором.

Принцип управления нагрузкой через Arduino

На плате Arduino есть порты двух типов - цифровые и аналоговые. Первый имеет два состояния - «0» и «1» (логические ноль и единица). При подключении светодиода к плате в одном состоянии он будет светиться, в другом - нет.

Аналоговый вход, по сути, - ШИМ-контроллер, регистрирующий сигналы частотой около 500 Гц. Такие сигналы подаются на контроллер с настраиваемой скважностью. Аналоговый вход позволяет не просто включать или отключать управляемый элемент, но и изменять значение тока (напряжения).

При прямом подключении через порт используйте слабые светодиоды, добавляя к ним ограничительный резистор. Более мощная нагрузка выведет его из строя. Для организации управления светодиодной лентой и другим осветительным прибором примените электронный ключ (транзистор).

Подключение к Arduino

Прямое подключение светодиодной ленты к Arduino уместно только в случае применения слабых LED-диодов. Для светодиодной ленты между ней и платой необходимо установить дополнительные электротехнические элементы.

Через реле

Подключите реле к плате Arduino через цифровой выход. Управляемая полоса может иметь одно из двух состояний - включения или выключения. Если нужно организовать управление RGB-лентой, понадобятся три реле.

Значение тока, контролируемое данным устройством, ограничивается мощностью катушки. Если мощность слишком мала, элемент не сможет замыкать большие контакты. Для наиболее высоких мощностей примените релейные сборки.

С помощью биполярного транзистора

Если нужно повысить ток или напряжение на выходе, подключите биполярный транзистор. При его выборе ориентируйтесь на ток нагрузки. Ток управления не превышает 20 мА, поэтому добавьте резистор на 1 – 10 кОм для ограничения тока за счет сопротивления.

Обратите внимание! В идеале нужно пользоваться транзистором n-p-n типа на базе общего эмиттера. Если требуется большое усиление, примените транзисторную сборку.

С помощью полевого транзистора

Вместо биполярных транзисторов для управления светодиодными лентами возьмите полевые (сокращенно - МОП). Разница между ними связана с принципом управления: биполярные изменяют ток, полевые - напряжение на затворе. Благодаря этому небольшой ток затвора управляет большой нагрузкой (десятками ампер).

Обязательно добавьте к схеме резистор для ограничения тока. Из-за высокой чувствительности к помехам к выходу контроллера подключается масса резистора на 10 кОм.

С помощью плат расширения

Если нет желания использовать реле и транзисторы, можно купить целые блоки - платы расширения. К ним относятся Wi-Fi, Bluetooth, эквалайзер, драйвер и т. д., которые необходимы для управления нагрузкой разных мощностей и напряжений. Это могут быть как одноканальные элементы, которые подойдут монохромным лентам, так и многоканальные (для управления цветными RGB-лентами).

Различные программы

Библиотеки с программами для платы Arduino можно загрузить с официального сайта или найти в Интернете на других информационных ресурсах. Если есть навыки, можете даже самостоятельно написать скетч-программу (исходный код). Для сбора электрической цепи не требуется каких-то специфичных знаний.

Варианты применения системы под управлением Arduino:

  1. Освещение. Наличие датчика позволит задать программу, в соответствии с которой свет в комнате либо появляется сразу, либо плавно включается параллельно заходу солнца (с увеличением яркости). Для включения можно использовать Wi-Fi, телефон и интеграцию в систему «Умный дом».
  2. Освещение коридора и лестничных площадок. Arduino позволит организовать освещение каждой детали (к примеру, ступени) отдельно. Добавьте в плату датчик движения, чтобы адресные светодиоды загорались последовательно в зависимости от того места, где зафиксировано движение объекта. Если движения нет, диоды будут гаснуть.
  3. Светомузыка. Воспользуйтесь фильтрами и подайте на аналоговый вход звуковые сигналы, чтобы на выходе организовать светомузыку (эквалайзер).
  4. Модернизация компьютера. Некоторые датчики позволят создать зависимость цвета светодиодов от температуры процессора, его загрузки, нагрузки на оперативную память. Используется протокол DMX 512.

Микросхемы Arduino расширяют возможности применения монохромных и многоканальных (RGB) светодиодных лент. Помимо слияния различных цветов, образования сотен тысяч оттенков сможете создать неповторимые эффекты - затухание при заходе солнца, периодическое включение/выключение при фиксации движения и многое другое.

Интересно всегда было попробовать светодиодную ленту ws2812b.Вот получил ленту с Banggood. Тем более подходят новогодние праздники. Применить хотелось в разных вариантах.Как украшение или гирлянду для Нового года или как самостоятельную СДУ.
Китайцы дали такие параметры:
-Работа напряжение: 5 В постоянного тока
-мощность: 43.2w
-Width: 12 мм
-длина: 1m
-waterproof: не водонепроницаемый (ip20)
-Отлично, высокое качество интеллектуальное освещение!
-основана на высокое качество SMD5050 RGB LED s код вставки (встроенный) интегрированные ИКС управления ws2811. каждый LED независимо представляет собой адресуемые, открывая совершенно новые возможности освещения.
-ws2812. 5050 СМД ж / ws2811 IC встроенный in144 RGB LED s на метр
-он ws2811 IC управления ONE LED Чип
-каждый LED индивидуально адресуемые, с 8 битами зеленого, красного и синего данных сдвинуты в течение 24-битном цвете
-strip может быть разрезан one от one привело чип.

Примечание: источник питания или контроллер не включает

В пакет включено:
1 * RGB LED полосы

Что такое ws2812b? Это уже второе поколение полноцветных светодиодов с индивидуальной адресацией, также известное как NeoPixel. В одном корпусе собраны RGB светодиоды и контроллер. Для каждого из цветов доступно 255 уровней яркости. Итого 16 миллионов цветов и всего один провод для управления. Выпускаются в виде отдельных светодиодов, лент, колец, матриц и т.п. Для работы необходим внешний контроллер, на эту роль вполне подходит Ардуино. Каждый из светодиодов (красный, синий, зеленый) при максимальной яркости потребляет 20 миллиампер. Максимальное энергопотребление - 60 миллиампер, когда все три диода горят, получается при белом цвете. Отсюда легко получить максимальное потребление всей ленты, умножив 60 миллиампер на количество светодиодов. Еще немного потребляют контроллеры диодов.





Подключение
Сами по себе ленты не светятся, им необходим микроконтроллер. На его роль отлично подходит Arduino.
подойдет Arduino или Raspberry PI.Собрал схему подключения.


Для каждого из цветов доступно 255 уровней яркости. Итого 16 миллионов цветов и всего один провод для управления. Выпускаются в виде отдельных светодиодов, лент, колец, матриц и т.п. Для работы необходим внешний контроллер, на эту роль вполне подходит Ардуино. Каждый из светодиодов (красный, синий, зеленый) при максимальной яркости потребляет 20 миллиампер. Максимальное энергопотребление - 60 миллиампер, когда все три диода горят, получается при белом цвете. Отсюда легко получить максимальное потребление всей ленты, умножив 60 миллиампер на количество светодиодов. Еще немного потребляют контроллеры диодов.
Приблизительное пиковое потребление для лент длиной 1 метр:
30 диодов на метр 9.5 ватт (чуть меньше 2A при 5V)
60 диодов на метр 19 ватт (3.6А при 5V)
144 диода на метр 35 ватт (7A при 5V)
Блоки питания рекомендуется выбирать с небольшим запасом по мощности.
Подключение.
Сами по себе ленты не светятся, им необходим микроконтроллер. На его роль отлично подходит Arduino(Uno.Nano,Pro mini).


Как применить эту ленту это уже личное ваше дело-как украшение, гирлянду для Нового года или как самостоятельную СДУ. Я приобрел ленту длиной 1 метр с количеством светодиодов 144 штуки. Ее можно разрезать при необходимости на несколько частей. Подложка бывает белого и черного цвета. На концах установлены разьемы для подключения следующей ленты.То есть можно удлинить гирлянду.


Я сделал светомузыкальную установку для визуализации музыки в реальном времени. Много различных световых эффектов, синхронизированных с музыкой.


На один канал подключено 51 сетодиод ленты, и паралельно в данном случае кольцо с светодиодами(чисто для демонстарции)

Подключить к источнику звука-выходы от громкоговорителя. Сделано на светодиодной ленте ws2812b, Arduino UNO, понижающей Dс-Dс плате или блок питания на 5 вольт\3ампера. Осуществлен принцип индикатора уровня сигнала с большим количеством световых эффектов. А где использовать эту схему это уже личное ваше дело и зависит от вашей фантазии.Скетч по ссылке
Плюсом я думаю считается что управление этой лентой осуществляется по одному проводу, и можно получать разные эффекты на каждом светодиоде.
Минусом я считаю что пока конечно цена на эти светодиоды завышена. Тем не менее можно получать массу эффектов в цвете и динамике для для последующих разработок даже начинающим. Всем спасибо за потраченное время и хороших Новогодних праздников!!!
Подробней в видео

В прошлый раз был рассмотрен способ подключения светодиодной ленты к ардуино через драйвер L298. Управление цветом осуществлялось программно - функция Random. Теперь пришла пора разобраться, как управлять цветом светодиодной ленты на основании показаний датчика температуры и влажности DHT 11.

За основу взят пример подключения светодиодной ленты через драйвер L298. Плюсом ко всему в пример добавлен дисплей LCD 1602, который будет отображать показания датчика DHT 11.

Для проекта понадобятся следующие элементы Ардуино:

  1. Плата Ардуино УНО.
  2. Дисплей LCD 1602 + I2C.
  3. Датчик температуры и влажности DHT
  4. Светодиодная лента.
  5. Драйвер L298.
  6. Блок питания 9-12В.
  7. Корпус для ардуино и дисплея (по желанию).

Первым делом посмотрим на принципиальную схему (рис. 1). На ней можно увидеть, как нужно подключить все вышеперечисленные элементы. В сборке схемы и подключении ничего сложного нет, однако стоит упомянуть об одном нюансе, о котором большинство людей забывают, и в итоге получают неправильные результаты работы LED – ленты с Ардуино.

Рисунок 1. Принципиальная схема подключения Arduino и светодиодной ленты с датчиком DHT 11

Во избежание некорректной работы светодиодной ленты (мерцание, несоответствие цветов, неполное свечение и т.д.), питание всей схемы необходимо сделать общим, т.е. объединить контакты GND (земля) контроллера Ардуино и драйвера L298 (светодиодной ленты). Как это сделать, можно посмотреть на схеме.

Пару слов о подключении датчика влажности. Если покупать голый DHT 11, без обвязки, то между первым и вторым контактами, 5В и Data, соответственно, нужно впаять резистор номиналом 5-10 кОм. Диапазон измерения температуры и влажности написан на обратной стороне корпуса датчика DHT 11. Температура: 0-50 градусов по Цельсию. Влажность: 0-80%.


Рисунок 2. Правильное подключение датчика влажности DHT 11

После сборки всех элементов проекта по схеме, необходимо написать программный код, который заставит все это работать так, как нам нужно. А нужно нам, чтобы светодиодная лента изменяла цвет в зависимости от показаний датчика DHT 11 (влажности).

Для программирования датчика DHT 11 понадобится дополнительная библиотека.

Код программы Arduino и RGB – лента. Изменение цвета ленты в зависимости от влажности.

#include #include //библиотека для работы с дисплеем LCD 1602 #include //библиотека для работы с датчиком влажности и температуры DHT 11 int chk; //переменная будет хранить все данные с датчика DHT11 int hum; //переменная будет хранить показания влажности с датчика DHT11 dht11 DHT; //объект типа DHT #define DHT11_PIN 4 //контакт Data датчика DHT11 подключен на вход 4 #define LED_R 9 // пин для канала R #define LED_G 10 // пин для канала G #define LED_B 11 // пин для канала B //переменные будут хранить значения цветов //при смешивании всех трех цветов будет получаться необходимый цвет int led_r=0, led_g=0, led_b=0; //объявление объекта дисплея с адресом 0х27 //не забываем использовать в проекте дисплей через плату I2C LiquidCrystal_I2C lcd(0x27,16,2); void setup() { //создание дисплея lcd.init(); lcd.backlight(); // объявляем пины выходами pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); } void loop() { chk = DHT.read(DHT11_PIN);//читаем данные с датчика DHT11 //вывод данных на дисплей lcd.print("Temp: "); lcd.print(DHT.temperature, 1); lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Hum: "); lcd.print(DHT.humidity, 1); lcd.print(" %"); delay(1500); //для корректной работы датчика нужна задержка на опрос lcd.clear(); hum = DHT.humidity; //берем показания влажности //в диапозоне от 19 до 30% влажности выдать зеленый цвет if ((hum >= 19) && (hum <= 30)) { led_r = 1; led_g = 255; led_b = 1; } //в диапозоне от 31 до 40% влажности выдать красный цвет if ((hum >= 31) && (hum <= 40)) { led_r = 255; led_g = 1; led_b = 1; } //в диапозоне от 41 до 49% влажности выдать синий цвет if ((hum >= 41) && (hum <= 49)) { led_r = 1; led_g = 1; led_b = 255; } // подача сигналов цвета на выхода analogWrite(LED_R, led_r); analogWrite(LED_G, led_g); analogWrite(LED_B, led_b); }

Метки: Метки

Похожие статьи