5Подключение RGB светодиода с общим катодомк Arduino
Если вы используете RGB светодиод с общим катодом, то подключите длинный вывод светодиода к GND платы Arduino, а каналы R, G и B – к цифровым портам Arduino. При этом нужно помнить, что светодиоды загораются при подаче на каналы R, G, B высокого уровня (HIGH), в отличие от светодиода с общим анодом.
Схема подключения RGB светодиода с общим катодом к Arduino
Если не менять вышеприведённый скетч, то каждый цвет светодиода в этом случае будет гореть 0,2 секунды, а пауза между ними составит 0,1 секунду.
Полезный совет
Если вы хотите управлять яркостью светодиода, то подключайте RGB светодиод к цифровым выводам Arduino, которые имеют функцию ШИМ (PWM). Такие выводы на плате Arduino обычно помечены знаком тильда (волнистая линия), звёздочкой или обведены кружочками.
Шаг 4. Подключаем Arduino к Android-устройству
Нам нужно скачать приложение «Smart Bluetooth — Arduino Bluetooth Serial».
Smart Bluetooth — это приложение, которое позволяет использовать телефон для общения с модулем Bluetooth или платой, самым простым способом. Оно дает неограниченные возможности при управлении проектами. Smart Bluetooth предлагает множество способов передачи данных в ваш модуль.
Smart Bluetooth имеет следующие функции:
- Быстрое подключение к модулю,
- Отправлять и получать данные из вашего модуля,
- Управление цифровыми и PWM-контактами приемника,
- Темная и светлая тема,
- Различные модели управления для разных целей,
- Современный и отзывчивый интерфейс,
- Настраиваемые кнопки и переключатели,
- Реализуйте свой проект RC-машин с красивым геймпадом,
- Легкое управление RGB-лентами через слайдер,
- Автоматически отключает Bluetooth при закрытии для экономии батареи,
- Командная строка (терминал).
В этом уроке мы используем вторую вкладку (TAB). В целом процесс выглядит так:
- Откройте приложение, нажмите кнопку SEARCH и найдите соседние устройства.
- Когда ваше устройство найдено, выберите его, щелкнув по нему.
- Выберите предпочтительную тему (темный или светлый) и удерживайте выбранную вами кнопку.
- Дождитесь соединения, если не работает, попробуйте переподключиться.
- После успешного соединения выберите вторую вкладку (TAB), щелкнув по ней, перетащите ползунки и проверьте, не изменила ли светодиодная полоса цвет.
Как подключить светодиод к 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 Гц.
При отсутствии положительного результата необходимо еще раз проверить правильность соединений и программный код.
Проверка светодиодной ленты без блока питания
Если поблизости нет переменного напряжения 220В или источника питания, лента проверяется проще всего, с помощью обыкновенной батарейки. Многие применяют для этого дела крону.
Однако из-за недостаточного выходного напряжения, проверить фактическую яркость светодиодов у вас не получится. Поэтому лучше воспользоваться пальчиковыми элементами А23, которые сразу выдают необходимые в большинстве случаев 12В.
Их можно вытащить из пульта дистанционного управления сигнализации автомобиля или из радиозвонков.
Двумя тонкими проводами соединяете плюс и минус батарейки с соответствующими контактными пятачками на ленте.
При небольшой протяженности подсветки (до 5м) и ее маломощности, этого вполне будет достаточно, чтобы все светодиоды загорелись. Правда с условием, что изделие рассчитано на рабочее напряжение 12 вольт.
Если лента мощная и более протяженная, то здесь может понадобиться уже аккумуляторная сборка на основе так называемых магазинов или контейнеров.
С их помощью можно собирать полноценную светодиодную подсветку, которая ничем не будет уступать обычной. При этом иметь кучу преимуществ и применений.
Не можете найти нужных батареек, но при этом являетесь автолюбителем? Прекрасно.
Автомобильный аккумулятор отлично справится с проверкой лент практически любой мощности и протяженности (в условиях организации домашней подсветки).
Единственная проблема может возникнуть в его демонтаже из под капота машины.
В крайнем случае, если лента у вас еще не смонтирована, то ее всегда можно принести в гараж к автомобилю и проверить непосредственно там, не снимая аккумулятора.
Шаг 6. Скетч Arduino Ambilight
Ниже вы можете скачать или скопировать код для нашей подсветки Ардуино Эмбилайт.
#include "FastLED.h" #define NUM_LEDS 38 #define LED_DATA_PIN 3 #define NUM_BYTES (NUM_LEDS*3) // 3 colors #define BRIGHTNESS 100 #define UPDATES_PER_SECOND 100 #define TIMEOUT 3000 #define MODE_ANIMATION 0 #define MODE_AMBILIGHT 1 uint8_t mode = MODE_ANIMATION; byte MESSAGE_PREAMBLE[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 }; uint8_t PREAMBLE_LENGTH = 10; uint8_t current_preamble_position = 0; unsigned long last_serial_available = -1L; uint8_t led_counter = 0; uint8_t byte_counter = 0; CRGB leds; byte buffer; // Filler animation attributes CRGBPalette16 currentPalette = RainbowColors_p; TBlendType currentBlending = LINEARBLEND; uint8_t startIndex = 0; void setup() { Serial.begin(115200); FastLED.clear(true); FastLED.addLeds<WS2811, LED_DATA_PIN, GRB>(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); } void loop() { switch (mode) { case MODE_ANIMATION: fillLEDsFromPaletteColors(); break; case MODE_AMBILIGHT: processIncomingData(); break; } } void processIncomingData() { if (waitForPreamble(TIMEOUT)) { Serial.readBytes(buffer, NUM_BYTES); /* DEBUG for (int i = 0; i < NUM_BYTES; i++) { Serial.write((char)buffer); } */ while (byte_counter < NUM_BYTES) { byte green = buffer; byte blue = buffer; byte red = buffer; leds = CRGB(red, green, blue); } FastLED.show(); byte_counter = 0; led_counter = 0; } else { mode = MODE_ANIMATION; } } bool waitForPreamble(int timeout) { last_serial_available = millis(); while (current_preamble_position < PREAMBLE_LENGTH) { if (Serial.available() > 0) { last_serial_available = millis(); if (Serial.read() == MESSAGE_PREAMBLE) { current_preamble_position++; } else { current_preamble_position = 0; } } if (millis() - last_serial_available > timeout) { return false; } } current_preamble_position = 0; return true; } void fillLEDsFromPaletteColors() { startIndex++; // speed uint8_t colorIndex = startIndex; for( int i = 0; i < NUM_LEDS; i++) { leds = ColorFromPalette(currentPalette, colorIndex, BRIGHTNESS, currentBlending); colorIndex += 3; } FastLED.delay(1000 / UPDATES_PER_SECOND); if (Serial.available() > 0) { mode = MODE_AMBILIGHT; } }
Arduino FastLED описание библиотеки
Скачать библиотеку можно на нашем сайте, на странице — Библиотеки для Ардуино, также ссылку для скачивания Фастлед мы разместили в конце этой записи. В архиве, как и в прочих популярных библиотеках для управления лентой ws2812b Ардуино, имеется несколько примеров скетчей, с помощью которых можно самостоятельно разобраться, как правильно использовать команды библиотеки FastLED.
Ошибка ‘FastLED.h no such file or directory’
Первое, с чем сталкивается каждый начинающий программист и долго не может понять в чем причина — это ошибки компиляции Ардуино при загрузке скетча. Ошибка FastLED.h no such file or directory означает, что на компьютере не установлена библиотека FastLED.h. Проблему достаточно просто устранить, установив FastLED. Это правило действует и при возникновении такой ошибки с другими библиотеками.
Описание команд библиотеки FastLED на русском
Далее пошагово разберем способ работы с библиотекой FastLED. Первым делом необходимо подключить библиотеку в скетче через команду . Затем следует задать константы () для удобства программирования — количество пикселей и пин для подключения адресной ленты. В примерах можно встретить вариант, что тип адресной ленты и ее цветовой режим тоже задаются с помощью констант.
#include <FastLED.h> // подключаем библиотеку #define NUM_LEDS 100 // указываем количество светодиодов на ленте #define PIN 4 // указываем пин для подключения ленты CRGB leds; void setup() { // основные настройки для адресной ленты FastLED.addLeds <WS2812, PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.setBrightness(50); }
Кроме основных настроек в процедуре void setup() еще указывается яркость для светодиодов с помощью команды — максимальное значение 255. Яркость можно поменять в любом месте программы, в том числе и в процедуре void loop(). В основном цикле будем включать последовательно пиксели разными цветами, которые задаются с помощью RGB палитры (объединим код для платы).
#include <FastLED.h> // подключаем библиотеку #define NUM_LEDS 100 // указываем количество светодиодов на ленте #define PIN 4 // указываем пин для подключения ленты CRGB leds; void setup() { // основные настройки для адресной ленты FastLED.addLeds <WS2812, PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.setBrightness(50); } void loop() { leds = CHSV(0, 0, 255); // задаем для первого пикселя синий цвет FastLED.show(); // отправляем информацию на ленту delay(500); leds = CHSV(0, 255, 0); // задаем для второго пикселя зеленый цвет FastLED.show(); // отправляем информацию на ленту delay(500); leds = CRGB::Red; // задаем для третьего пикселя красный цвет FastLED.show(); // отправляем информацию на ленту delay(500); leds = CRGB::White; // задаем для четвертого пикселя белый цвет FastLED.show(); // отправляем информацию на ленту delay(500); }
После загрузки прошивки вы можете поменять цвета пикселей на ленте. Как вы уже поняли из примера, цвета можно задавать двумя способами. А далее мы рассмотрим более сложные эффекты с библиотекой фастлед, которые в основе используют цикл for для быстрой отправки информации на ws2812b. Кроме предложенных вариантов, попробуйте загрузить в Ардуино скетчи из примеров для данной библиотеки.
Варианты управления адресной светодиодной лентой.
Есть несколько способов управлять адресной светодиодной лентой:
Аппаратный при помощи контроллера SPI
На эту тему вы можете почитать нашу специальную статью. В этой статье мы максимально подробно описали принципы управления по протоколу SPI.
Аппаратный при помощи UART-интерфейса
На эту тему вы можете почитать нашу специальную статью. В этой статье мы максимально подробно описали принципы управления с помощью UART.
Программный
Достоинство первых двух способов – это возможность освободить драйвер от части работы по передаче бит информации о цвете пикселю. Недостатки этих способов – во-первых, ограниченное количество линий управления пикселями, во-вторых, требуется дополнительное разбитие байтов информации о цвете на пачки битов (что частично съедает свободное время контроллера в моменты аппаратной передаче бит).
Ардуино и адресная светодиодная лента
Этот проект – простой способ начать работу, но идеи, которые он охватывает, могут быть расширены для действительно эффектного освещения. С помощью всего лишь нескольких компонентов вы можете создать свой собственный восход солнца. Если у вас есть стартовый комплект с Arduino, вы можете использовать любую кнопку или датчик для запуска светодиодов при входе в комнату, например:
Светодиодная лента Ардуино – Яркие идеи.
Эти ленты требуют меньшего количества компонентов для запуска, и есть некоторая свобода в отношении именно того, какие значения компонентов вы можете использовать. Конденсатор в этой цепи гарантирует, что светодиоды 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 светодиодов, вырезанных из более длинной полосы.
Используйте большее количество для красивейшего светового шоу!
Светодиодная лента Ардуино – написание кода.
Подключите плату 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 секунд, а затем равномерно исчезает до нуля:
Если у вас возникли трудности, дважды проверьте свою проводку и код.
БИБЛИОТЕКА GYVERRGB
GyverRGB v1.15
Мощная библиотека для удобного управления RGB светодиодами и лентами для Arduino
- 1530 значений для colorWheel
- Работа в пространстве RGB
- Работа в пространстве HSV
- Установка цвета в формате HEX
- Установка цветовой температуры
- 16 предустановленных цветов
- Настройка полярности ШИМ
- Функция плавной смены цвета
- Ограничение тока (по расчёту)
- Регулировка общей яркости
- Поддержание яркости LED ленты по мере разряда АКБ
- Возможность управления 6-ю RGB диодами/лентами с одной Arduino (встроенный генератор ШИМ на ВСЕХ 20 пинах atmega328)
- Режим с настройкой частоты ШИМ
- Матрица коррекции LUT
- Коррекция по минимальному сигналу ШИМ
- CRT гамма-коррекция яркости
Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)
Варианты управления адресной светодиодной лентой.
Есть несколько способов управлять адресной светодиодной лентой:
Аппаратный при помощи контроллера SPI
На эту тему вы можете почитать нашу специальную статью. В этой статье мы максимально подробно описали принципы управления по протоколу SPI.
Аппаратный при помощи UART-интерфейса
На эту тему вы можете почитать нашу специальную статью. В этой статье мы максимально подробно описали принципы управления с помощью UART.
Программный
Достоинство первых двух способов – это возможность освободить драйвер от части работы по передаче бит информации о цвете пикселю. Недостатки этих способов – во-первых, ограниченное количество линий управления пикселями, во-вторых, требуется дополнительное разбитие байтов информации о цвете на пачки битов (что частично съедает свободное время контроллера в моменты аппаратной передаче бит).
Ардуино и адресная светодиодная лента
Этот проект – простой способ начать работу, но идеи, которые он охватывает, могут быть расширены для действительно эффектного освещения. С помощью всего лишь нескольких компонентов вы можете создать свой собственный восход солнца. Если у вас есть стартовый комплект с 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 для начинающих.
Как работает адресная светодиодная лента
Принцип работы ленты следующий. Она поделена на сегменты, в каждом из которых находятся светодиод и конденсатор. Они все подключены параллельно, а данные передаются последовательно от одного сегмента к другому. Управление осуществляется контроллером, в котором прописывается программа функционирования. Управлять лентой можно через платформу Ардуино.
Маркировка адресной ленты:
- Black PCB / White PCB – цвета подложки
- 1м/5 м – длина адресной ленты
- 30/60/74 и т.д. – сколько светодиодов приходится на 1 метр ленты
- IP30, IP65, IP67 – степень влаго- и пылезащищенности ленты.
Адресные светодиодные ленты используются для сборки полноценных модулей, в конструировании ламп с управлением soft lights, для декоративной подсветки, в построении диодных экранов уличной рекламы.
Устройство элемента светильника
Каждый адресный светодиод содержит минимальное количество выводов:
- U питания (VDD);
- общий провод (GND);
- вход данных (DIN);
- выход данных (DOUT).
Это позволяет элементы со встроенными излучателями размещать в корпусах с 4 выводами (WS2812B).
Расположение выводов WS2812B.
У микросхем с внешним подключением LED потребуется еще минимум три вывода для подсоединения светодиодов. В итоге у стандартного корпуса с 8 выводами остается одна свободная ножка, которую разработчики могут задействовать под другие нужды.
Цоколевка WS2818 с дополнительным выходом данных.
Так, проектанты микросхемы WS2811 задействовали свободный вывод под переключатель скорости, а WS2818 – под резервный вход данных (BIN).
Светодиодная лента Ардуино – написание кода.
Подключите плату 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 секунд, а затем равномерно исчезает до нуля:
Если у вас возникли трудности, дважды проверьте свою проводку и код.
Обзор лент
Лентами, завоевавшими наибольшую популярность у народа, послужили сборки на основе микросхем WS2812b и WS2811. Рассчитаны они на 5 и 12 вольт соответственно.
Пиксельная лента на основе микросхемы WS2811 характеризуется наличием у каждого из вспомогательных контроллеров не менее 8 выходов. Три из них отвечают за красный, зелёный и синий цвета, два – обеспечивают обмен данными, один – для включения нужного режима работы, один – на питание и последний – на «массу». Более «продвинутая» версия сборки WS2811 имеет существенное отличие от своего предшественника: точечный (местный) контроллер включается сразу с тремя светодиодами, что значительно повышает дешевизну и надёжность этой модели.
Обобщая закономерности функционирования, стоит отметить следующее. В составе смарт-лент используется ШИП-контроллер, размещённый непосредственно в корпусе SMD-светодиода. Серия 5050 располагает именно такой схемой управления. Единый блок – светоизлучающие диоды и простейший контроллер – позволяют набирать ленту любой длины на таком светодиоде. Число выводов такой сборки – от 4 до 8 на каждый светоэлемент.