Светодиодная лента ардуино. управление лентой на ардуино. идеи

Содержание

Подключение светодиодной ленты к Ардуино

подключение светодиодной ленты к Arduino Мнение экспертаАлексей БартошСпециалист по ремонту, обслуживанию электрооборудования и промышленной электроники.Задать вопрос экспертуArduino Nano могут управлять не только электродвигателями. Они используются также для светодиодных лент. Но так как выходные ток и напряжение платы недостаточны для прямого подключения к ней полосы со светодиодами, то между контроллером и светодиодной лентой необходимо устанавливать дополнительные приспособления.

Через реле

Подключение через реле Реле подключается к устройству на цифровой выход. Полоса, управляемая с его помощью имеет только два состояния — включенная и выключенная. Для управления red-blue-green ленточкой необходимы три реле. Ток, который может контролировать такое устройство, ограничен мощностью катушки (маломощная катушка не в состоянии замыкать большие контакты). Для подсоединения большей мощности используются релейные сборки.

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

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

Транзистор лучше применять n-p-n с общим эмиттером. Для большего коэффициента усиления используется схема с несколькими элементами или транзисторная сборка (микросхема-усилитель).

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

Кроме биполярных, для управления полосами используются полевые транзисторы. Другое название этих приборов – МОП или MOSFET-transistor.

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

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

Подключение Arduino с помощью плат расширения

Это может быть Wi-Fi или Bluetooth, драйвер управления электродвигателем, например, модуль L298N или эквалайзер. Они предназначены для управления нагрузками разной мощности и напряжения. Такие устройства бывают одноканальными – могут управлять только монохромной лентой, и многоканальными – предназначены для устройств RGB и RGBW, а также лент со светодиодами WS 2812.

Программная часть

Код и библиотеки можно скачать здесь.

SUP_v1.0Скачать

Распаковываем архив, копируем библиотеки из папки lib в папку C:\Program Files (x86)\Arduino\libraries.

После чего открываем файл SUP_V1.0.ino и видим настройки:

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

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

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

Это был домашний вариант подсветки, а теперь покажу вам автомобильный:

Провода и разъемы

Цифровая лента на конце имеет минимум не два, а три
провода.

V+ (5V или 12V)

V- (GND)

управляющий провод

Два из них — это обычное питание, а третий отвечает за
направление сигнала. К проводам на концах уже готового к использованию изделия
припаяны специальные разъемы:

DI (Digital Input) или цифровой вход в начале ленты

DO (Digital Output) цифровой выход

При наличии таких разъемов подключить ленту неправильной
стороной у вас не получится. Второй конец DO
требуется при наращивании длины световой конструкции.

Ошибка №4
А вот без таких разъемов начало и конец ленты можно и перепутать.

В этом случае ничего гореть и светиться у вас не будет.

Ошибка №5
Слишком длинные провода питания от контроллера.

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

В этом случае попробуйте их скрутить косичкой. В
некоторых ситуациях помогает.

Светодиодная лента Ардуино – написание кода.

Подключите плату Arduino к компьютеру через USB и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный для вашей платы, в меню «Сервис»> «Сервис и инструменты»> «Порт». Откройте новый эскиз и сохраните его с соответствующим именем. Этот эскиз затухает с одноцветными огнями, держит их в таком состоянии в течение нескольких секунд, а затем исчезает, пока они не погаснут снова.

Вы можете сделать эскиз самостоятельно или просто загрузить готовый код из GitHub (https://gist.github.com/anonymous/d4fa3719478c3c5a9c321cc372e9540).

Начните с определения штырей, которые будут использоваться для управления МОП-транзисторами.

#define RED_LED 6 #define BLUE_LED 5 #define GREEN_LED 9

Затем вам понадобятся переменные. Создайте общую переменную яркости вместе с переменной для яркости каждого цвета. Мы будем использовать только основную переменную яркости для выключения светодиодов, поэтому установите здесь максимальное значение 255. Вам также потребуется создать переменную, чтобы контролировать скорость замирания.

int brightness = 255; int gBright = 0; int rBright = 0; int bBright = 0; int fadeSpeed = 10;

В вашей настройке мы установим выводы Arduino. Мы также будем вызывать пару функций с задержкой в 5 секунд. Этих функций еще не существует, но не беспокойтесь, мы доберемся до них.

void setup() { pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT);

TurnOn(); delay(5000); TurnOff(); } Теперь создайте метод TurnOn (): void TurnOn() { for (int i = 0; i < 256; i++) { analogWrite(RED_LED, rBright); rBright +=1; delay(fadeSpeed); } for (int i = 0; i < 256; i++) { analogWrite(BLUE_LED, bBright); bBright += 1; delay(fadeSpeed); } for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, gBright); gBright +=1; delay(fadeSpeed); } }

Эти три цикла for полностью увеличивают яркость каждого цвета за время, указанное значением fadeSpeed. Наконец, вам нужно создать метод TurnOff (): void TurnOff() { for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, brightness); analogWrite(RED_LED, brightness); analogWrite(BLUE_LED, brightness); brightness -= 1; delay(fadeSpeed); }}void loop() {} Этот метод применяет нашу переменную яркости ко всем трем цветным выводам и уменьшает их до нуля в течение определенного периода времени. Нам также нужен метод пустого цикла, чтобы избежать ошибок компиляции.

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

Плавное включение светодиодной ленты на Ардуино

Теперь вы должны увидеть, что ваша светодиодная лента Ардуино наращивает яркость, удерживая белый оттенок в течение 5 секунд, а затем равномерно исчезает до нуля:

Если у вас возникли трудности, дважды проверьте свою проводку и код.

Принцип работы

Принцип работы RGB-светодиодов основан на смешении цветов. Управляемое зажигание одного, двух или трех элементов позволяет получить различное свечение.


Палитра смешивания дискретных цветов.

Включение кристаллов по отдельности дает три соответствующих цвета. Попарное включение позволяет достичь свечения:

  • красный+зеленый p-n переходы в итоге дадут желтый цвет;
  • синий+зеленый при смешивании дают бирюзовый;
  • красный+синий позволяют получить фиолетовый.

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


Палитра смешивания цветов в разных соотношениях

Parts needed

  • 1 x Arduino Uno Board
  • 1 x RGB LED
  • 3 x 200 – 220Ω resistor
  • 1 x breadboard
  • Jumper wires

Here are two diagrams for connection purposes. The first one is for the common anode (I used it) and the second one is for the common cathode.

Whichever you use, make sure to connect the LED properly. The code does not change.

We need to connect 4 cables and 3 resistors. Here is how it looks like:

Now, we can upload the first program to the Arduino. The following code will light up the red, green and blue LED in a sequence. Not so fancy huh!

The previous code was used for the sake of showing you how it looks and works.

Now, we can build something more sophisticated.

Here, we uses a function random.

This function calls random(, ); That make you get a random number within the range, min_value (the smallest value we can get is 0 and max value is 255 because those are the max value we can write to the analogWrite() function).

We have the following 3 values for each color and we randomly generate numbers for those colors.

When current_color_value is equal to random_color_value, we get a new random value.

The LED itself is just really bright and we are not able to notice it is color changing. We should somehow diffuse its color to make it look better.

You most probably have this type of foam somewhere in your house, it usually come in boxes to protect their content when shipped. It is just perfect for this. Just make a small hole for the LED to go in and we are set to go.

I hope you have just built your first RGB LED Arduino project. Just take a look on how cool this is.

https://youtube.com/watch?v=K70QYUtV3UE

Немного теории

Я думаю все знают, что свет – это поток фотонов, но в то же время он является электромагнитной волной, излучением. Человеческий глаз воспринимает очень узкий диапазон этого излучения: приблизительно от 390 до 790 ТГц (террагерц), так называемое видимое излучение или видимый свет. “Ориентироваться” в этом диапазоне электромагнитного излучения принято в обратной величине – длине волны, измеряемой в данном случае в нанометрах (нм): человеческий глаз видит излучение в диапазоне от

400 нм (фиолетовый) до

800 нм (красный). Между синим и красным есть ещё один важный цвет – зелёный:

Красный (Red, R), зелёный (Green, G) и синий (Blue, B) являются основными цветами: смешивая эти три цвета в разных пропорциях можно получить плюс-минус все остальные цвета.

Этот наглядный “двухмерный” случай с кругами вы тоже скорее всего видели. Если раскручивать тему дальше, то можно задаться интенсивностью каждого цвета и получить итоговый цвет как функцию от трёх переменных, или же трёхмерное цветовое пространство RGB. Если интенсивности всех трёх цветов равны нулю – получится чёрный цвет, если все три максимальны – белый, а всё что между – оттенки:

На картинке выше интенсивность каждого цвета представлена диапазоном 0-255. Знакомое число, не правда ли? Всё верно, в большинстве применений диапазон каждого цвета кодируется одним байтом, потому что это удобно с точки зрения программирования и достаточно с точки зрения глаза: три цвета – три байта – 256*256*256 == 16.8 миллионов оттенков. Да, именно эта цифра часто фигурирует в рекламах смартфонов и телевизоров, и именно столько оттенков мы можем абсолютно не напрягаясь получить при использовании Arduino и RGB светодиодов, о чём и поговорим в этом уроке.

Плюсы и минусы светодиодов RGB

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

К основному минусу RGB-светодиодов относят невозможность получения чистого белого цвета за счет смешения трех цветов. Для этого потребуется семь оттенков (в качестве примера можно привести радугу – ее семь цветов являются результатом обратного процесса: разложения видимого света на составляющие). Это накладывает ограничения на использование трехцветных светильников в качестве осветительных элементов. Чтобы несколько компенсировать эту неприятную особенность, при создании светодиодных лент применяется принцип RGBW. На каждый трехцветный LED устанавливается один элемент белого свечения (за счет люминофора). Но стоимость такого осветительного устройства заметно возрастает. Также бывают светодиоды исполнения RGBW. У них в корпусе установлено четыре кристалла – три для получения исходных цветов, четвертый – для получения белого цвета, он излучает свет за счет люминофора.


Схема подключения для RGBW-варианта с дополнительным контактом.

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

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

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

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

https://youtube.com/watch?v=slbtRfQYGx4

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

Как подключить светодиод к Arduino Uno

Для теста нам понадобится:

  • Arduino Uno
  • макетная плата
  • светодиод
  • резистор для светодиода
  • соединительные провода

Все соединяем, согласно указанной схеме.

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

Как можно видеть, мы использовали два контакта Arduino. Первый из них pin13 будет служить для управления светодиодом, второй – минус схемы.

Следует обратить внимание на. Анод (+) светодиода нужно подключить через резистор к pin13

Катод (-) светодиода подключаем к минусу платы

После проверки правильности соединения мы можем перейти к написанию нашей первой программы

Катод (-) светодиода подключаем к минусу платы. После проверки правильности соединения мы можем перейти к написанию нашей первой программы.

Наша первая программа позволит поочередно включать и выключать светодиод. Частота мигания светодиода составит около 1Гц.

const int ledPin = 13; // номер контакта для светодиода
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH); // устанавливаем высокое состояние на pin13
delay(500); //остановка 0,5 сек (500ms)
digitalWrite(ledPin, LOW); // устанавливаем низкое состояние на pin13
delay(500); // остановка 0,5 сек (500ms)
}

Программа начинается с объявления используемого контакт (ledPin). С этого момента везде, где мы будем ссылаться на «ledPin», будет ссылка на pin13 Arduino.

Затем в функции setup() мы указываем, что наш pin13 будет использоваться как выход.

Функция pinMode(pin, mode) позволяет определить, будет ли использоваться наш контакт как вход или как выход. Первый параметр функции это номер контакта, второй предопределенное значение INPUT (вход) или OUTPUT (выход).

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

Функция loop() содержит непосредственно сам код программы, который выполняется в бесконечном цикле.

Функция digitalWrite(pin, value) позволяет изменять статус каждого из контактов. Цифровые выходы могут иметь низкий (LOW) или высокий (HIGH) логический уровень. LOW (лог.0) — электрически замкнут на минус, а HIGH (лог.1) — около 5 В.

Номер порта в функции digitalWrite () может быть указан непосредственно в виде числа (в нашем случае 13) или обозначен так, как мы прописали его в функции pinMode () (т.е ledPin).

Последним элементом программы является функция delay(), которая останавливает выполнение программы на определенное время. Время задается в миллисекундах. Одна секунда это 1000 мс.

Зная, для чего служат отдельные функции программы, мы можем изучить работу программного кода целиком:

Итак, pin13 Arduino устанавливается как выход. Следующим шагом идет установка высокого состояния на Pin13 и приостановка дальнейшего выполнения кода на 0,5 сек. Затем Pin13 устанавливается в низкое состояние и исполнение кода приостанавливается на 0,5 сек. Согласно философии написания программ в Arduino IDE, функция loop () выполняется в бесконечном цикле, что вызовет визуальное мигание светодиода.

После того, как вы написали программу, скомпилируйте ее и отправьте в Arduino. Если все шаги были выполнены правильно, светодиод должен начать мигать с частотой примерно в 1 Гц.

При отсутствии положительного результата необходимо еще раз проверить правильность соединений и программный код.

Плавное управление RGB светодиодом

Управление rgb светодиодом на Arduino можно сделать плавным, используя аналоговые выходы с «ШИМ». Для этого ножки светодиода необходимо подключить к аналоговым выходам, например, к пинам 11, 10 и 9. И подавать на аналоговые выходы микроконтроллера различные значения ШИМ (PWM), для этого воспользуемся циклом for, с помощью которого можно повторять нужные команды в программе.

Скетч для плавного мигания RGB светодиода

#define RED 11  // присваиваем имя RED для пина 11
#define GRN 10 // присваиваем имя GRN для пина 10
#define BLU  9   // присваиваем имя BLU для пина 9
 
void setup() {
   pinMode(RED, OUTPUT);  // используем Pin11 для вывода
   pinMode(GRN, OUTPUT); // используем Pin10 для вывода
   pinMode(BLU, OUTPUT);  // используем Pin9 для вывода
}
 
void loop() {
   // плавное включение/выключение красного цвета
   for (int i = 0; i <= 255; i++) {
      analogWrite(RED, i);
      delay(2);
   }
   for (int i = 255; i >= 0; i--) {
      analogWrite(RED, i);
      delay(2);
   }

   // плавное включение/выключение зеленого цвета
   for (int i = 0; i <= 255; i++) {
      analogWrite(GRN, i);
      delay(2);
   }
   for (int i = 255; i >= 0; i--) {
      analogWrite(GRN, i);
      delay(2);
   }

   // плавное включение/выключение синего цвета
   for (int i = 0; i <= 255; i++) {
      analogWrite(BLU, i);
      delay(2);
   }
   for (int i = 255; i >= 0; i--) {
      analogWrite(BLU, i);
      delay(2);
   }
}

Пояснения к коду:

  1. с помощью директивы мы заменили номера пинов 9, 10 и 11 на соответствующие имена , и . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. пины 9, 10 и 11 мы использовали, как аналоговые выходы .

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

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

Таким образом достаточно просто подать 12V от источника напряжения на ленту и она будет светиться. За простоту и удобство приходится платить эффективностью. Простая математика: три белых светодиода, каждому нужно по

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

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

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

Полный текст программы

const int buttonPin=2; boolean lastButtonState = LOW; boolean buttonState = LOW; int RLED = 9; int GLED = 10; int BLED = 11; int ledMode = 0; void setup(){ Serial.begin(9600); pinMode (buttonPin , INPUT); pinMode(RLED, OUTPUT); pinMode(GLED, OUTPUT); pinMode(BLED, OUTPUT); } void setMode(int mode){ if (mode == 1){ digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); }else if (mode == 2){ digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, LOW); }else if (mode == 3){ digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); }else if (mode == 4){ analogWrite(RLED, 127); analogWrite(GLED, 0); analogWrite(BLED, 127); }else if (mode == 5){ analogWrite(RLED, 0); analogWrite(GLED, 127); analogWrite(BLED, 127); }else if (mode == 6){ analogWrite(RLED, 127); analogWrite(GLED, 127); analogWrite(BLED, 0); }else if (mode == 7){ analogWrite(RLED, 85); analogWrite(GLED, 85); analogWrite(BLED, 85); }else{ digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); } } boolean debounce(boolean last){ boolean current = digitalRead(buttonPin ); if (last != current){ delay(3); current = digitalRead(buttonPin ); return current; } } void loop(){ buttonState = debounce(lastButtonState); if (lastButtonState == LOW && buttonState == HIGH){ ledMode++; if (ledMode == 8){ ledMode = 0; } setMode( ledMode ); } lastButtonState = buttonState; }

Цвета

Немного теории: мы можем смешивать три основных цвета и видеть новые оттенки, так как в наших глазах три типа рецепторов (для красного, зеленого и синего цветов). В результате ваш глаз и мозг обрабатывает информацию о насыщенности этих трех цветов и преобразовывает их в другие оттенки спектра.

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

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

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

Так как черный цвет не что иное, как отсутствие света, получить его не получится. Ближайший оттенок черного – это полностью выключенные светодиоды.

How to Connect RGB LED with Arduino

The common negative connection of the LED package is the second pin from the flat side of the LED package. It is also the longest of the four leads. This lead will be connected to ground.

For testing purposes, check your LED datasheet for its pin-out or below are the two most common RGB LED form factors and pin-outs. The following is an example:

Wire up the Test Schematic (below)

  • Connect a current limiting resistor (270Ω) to each of the three cathodes
  • Connect the common anode to 5V
  • Test each color by connecting its current limiting resistor to ground
  • Experiment with colour mixing a little by powering multiple elements at once

Each LED inside the package requires its own resistor to prevent too much current flowing through it. The three positive leads of the LEDs (one red, one green and one blue) are connected to Arduino output pins using these resistors.

Программа и режимы

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

void setMode(int mode){ if (mode == 1){ // только красный digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); }else if (mode == 2){ // только зеленый digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, LOW); }else if (mode == 3){ // только синий digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); } }

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

Вы можете и сами дописать любые режимы для светодиода и даже использовать возможности ШИМ пинов Ардуино, чтобы плавно изменять цвета.


Переключаем режимы

Ардуино и адресная светодиодная лента

Этот проект – простой способ начать работу, но идеи, которые он охватывает, могут быть расширены для действительно эффектного освещения. С помощью всего лишь нескольких компонентов вы можете создать свой собственный восход солнца. Если у вас есть стартовый комплект с 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 для начинающих.

Как это работает

Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, то есть +5 В будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи все следующие сегменты перестанут светиться. Управление готовыми устройствами и модулями на базе WS2812.

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

У каждой адресной ленты есть начало и конец, которые нельзя менять местами во время сборки схемы. Чтобы не запутаться, производители используют условные обозначения, например, стрелки, указывающие направление сигнала. Подключение адресной светодиодной ленты WS2812B к Arduino производится по трём проводам, как показано на рисунке.Контакты питания +5V и GND соединяют с соответствующими выводами на плате Arduino.

Если подсоединяемый отрезок насчитывает более 13-ти светодиодов, то необходимо использовать выносной блок питания. При этом общий провод (GND) Arduino и «минус» блока питания должны быть соединены между собой. Контакт DIN (digital input) предназначен для приёма данных от контроллера и электрически соединяется с любым из его цифровых портов. С другой стороны адресной ленты (и каждого сегмента тоже) размещено 3 контакта: +5V, DO (digital output) и GND, к которым можно подключить ещё несколько отрезков разной длины.

Так как каждый элемент WS2812B фактически состоит из 3 светодиодов (синего, красного, зелёного), то для управления его свечением потребуется 3 байта (по одному на каждый цвет). В свою очередь, каждый байт может принимать значение от 0 до 255, в результате чего можно задать более 16,5 млн оттенков. Размер скетча будет равен количеству светодиодных сегментов, умноженному на 3. Передача данных происходит следующим образом: ШИМ-драйвер WS2812B первого сегмента забирает из посылки первые 3 байта, пропуская остальные данные на выход DO.

Далее следует пауза длиною до 50 мкс, означающая, что второй по счёту драйвер должен принять следующие 3 байта. И так далее. Длительность паузы больше 50 мкс означает конец передачи и повторение цикла. Для работы с адресными лентами и модулями проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).

Адресные ленты стоят дороже обычных лент, и применяются обычно там, где простые ленты по какой-то причине не применимы: полноцветные модульные сборки, декоративная подсветка с управлением «soft light», наружная реклама и т. д. Особенность таких сборок в том, что они способны изменять и цвет и яркость отдельных своих сегментов по более сложному алгоритму, нежели простые LED-ленты, даже если эти LED-ленты оснащены умными драйверами. ШИМ-сигнал управления подается со специального запрограммированного контроллера на вход ленты, и передается последовательно на вход одного чипа (digital input – DI), выходит из него (digital output – DO), затем проходит через второй чип, и т. д. Управление легко осуществить при помощи программы на ардуино.

Светодиодная лента в блоком управления.

ШИМ и Arduino

Широтно импульсная модуляция (ШИМ (PWM на английском)) – это один из методов управления питанием. В нашем случае ШИМ используется для управления яркостью каждого отдельного светодиода.

На рисунке ниже схематично изображен сигнал с одного из ШИМ пинов Arduino.

Каждую 1/500 секунды ШИМ выход генерирует импульс. Длина этого импульса контролируется функцией ‘analogWrite’. То есть, ‘analogWrite(0)’ не будет генерировать никакого импульса, а ‘analogWrite(255)’ сгенерирует сигнал, который будет длится до самого начала следующего. То есть, будет создаваться впечатление, что подается один непрерывный импульс.

Когда в пределах функции analogWrite мы указываем значение в диапазоне от 0 до 255, мы генерируем импульс определенной длительности. Если длина импульса составляет 5%, мы подадим на указанный выход Arduino 5% от максимально доступного питания и создается впечатление, что светодиод горит не на максимальную яркость.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!