Как подключить адресную ленту к Ардуино
Для занятия нам понадобятся следующие детали:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- лента WS2812B;
- макетная плата;
- 1 резистор от 100 до 500 Ом;
- провода «папа-папа».
WS2812B светодиоды довольно энергоемкие, один светодиод потребляет до 60 мА при максимальной яркости. Для ленты со 100 диодами потребуется блок питания на 6 и более Ампер. Микроконтроллер Arduino и светодиодная лента могут быть подключены к разным источникам питания, но «земля» должна быть общая. Дело в том, что пин GND тоже участвует в управлении адресной лентой от платы Ардуино Уно.
Схема подключения адресной ленты 5 Вольт к Ардуино
WS2812B | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
5V | 5V | 5V | 5V |
DO | 10 | 10 | 10 |
Для работы с лентой используются три популярные библиотеки — FastLED, AdafruitNeoPixel и LightWS2812. Все библиотеки доступны для скачивания на нашем сайте здесь. Работать с библиотеками FastLED и Adafruit NeoPixel просто, отличаются они в функциональности и объеме занимаемой памяти. После сборки этой простой схемы и установки библиотек, загрузите скетч для адресной светодиодной ленты.
Скетч. Тестирование адресной ленты WS2812
#include <Adafruit_NeoPixel.h> // подключаем библиотеку #define PIN 10 // указываем пин для подключения ленты #define NUMPIXELS 3 // указываем количество светодиодов в ленте // создаем объект strip с нужными характеристиками Adafruit_NeoPixel strip (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); // инициализируем ленту strip.setBrightness(50); // указываем яркость светодиодов (максимум 255) } void loop() { strip.setPixelColor(0, strip.Color(255, 0, 0)); // включаем красный цвет на 1 светодиоде strip.show(); // отправляем сигнал на ленту delay(500); strip.clear(); // выключаем все светодиоды strip.setPixelColor(1, strip.Color(0, 0, 255)); // включаем синий цвет на 2 светодиоде strip.show(); // отправляем сигнал на ленту delay(500); strip.clear(); // выключаем все светодиоды strip.setPixelColor(2, strip.Color(255, 255, 255)); // включаем белый цвет на 3 светодиоде strip.show(); // отправляем сигнал на ленту delay(500); strip.clear(); // выключаем все светодиоды }
Пояснения к коду:
- нумерация светодиодов в ленте начинается с нуля, поэтому если мы хотим включить первый светодиод, то указывать надо «0».
Схема подключения адресной ленты 12 Вольт к Ардуино
Если у вас лента на 12 Вольт, то ее нужно подключать по схеме, размещенной выше. Резистор на цифровом пине защищает его от выгорания (если питание к ленте будет отключено, то она начнет питаться от цифрового пина, при этом пин может выгореть. Также не стоит подключать питание ленты к плате Ардуино, иначе может выгореть защитный диод на Ардуино или USB порт на компьютере (в худшем случае).
Скетч. Управление адресной лентой Ардуино
#include <Adafruit_NeoPixel.h> // подключаем библиотеку #define PIN 10 // указываем пин для подключения ленты #define NUMPIXELS 3 // указываем количество светодиодов в ленте // создаем объект strip с нужными характеристиками Adafruit_NeoPixel strip (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); // инициализируем ленту strip.setBrightness(50); // указываем яркость светодиодов (максимум 255) } void loop() { // поочередно включаем красный цвет for (int i = -1; i < NUMPIXELS; i++) { strip.setPixelColor(i, strip.Color(255, 0, 0)); strip.show(); delay(100); } // поочередно включаем зеленый цвет for (int i = -1; i < NUMPIXELS; i++) { strip.setPixelColor(i, strip.Color(0, 255, 0)); strip.show(); delay(100); } // поочередно включаем синий цвет for (int i = -1; i < NUMPIXELS; i++) { strip.setPixelColor(i, strip.Color(0, 0, 255)); strip.show(); delay(100); } }
Пояснения к коду:
- с помощью библиотеки Adafruit NeoPixel довольно просто управлять адресной лентой. В примерах к библиотеке можно найти много различных эффектов. Мы продемонстрировали простой вариант с циклом for для включения ленты.
Заключение. В этом обзоре мы рассмотрели лишь подключение и возможность управления адресной лентой от Ардуино. Так как возможности работы с библиотеками FastLED, AdafruitNeoPixel довольно разнообразны. Больше интересных примеров на Arduino и WS2812B размещено в разделе Проекты на Ардуино, где представлены проекты с бегущей строкой на адресной ленте и другие световые эффекты.
1Описание RGB светодиодов WS2812 и WS2812B
Светодиод WS2812 (или его модификация WS2812B, которая и будет использована в данной статье) представляет собой RGB светодиод. То есть в одном корпусе представлены сразу три светодиода разных цветов: красный, зелёный и синий.
Внешний вид и габариты светодиодов WS2812
Светодиод WS2812 имеет 6 выводов, в то время как WS2812B – лишь 4.
Номер вывода | Название | Назначение вывода |
---|---|---|
1 | Dout | Выход управляющего сигнала |
2 | Din | Вход управляющего сигнала |
3 | VCC | Питание управляющей цепи, 6…7 В |
4 | NC | Не подключен |
5 | VDD | Питание светодиода, 6…7 В |
6 | Gnd | Земля |
А вот назначение выводов светодиода WS2812B:
Внешний вид и габариты светодиодов WS2812B
Номер вывода | Название | Назначение вывода |
---|---|---|
1 | VDD | Питание светодиода, 3,5…5,3 В |
2 | Dout | Выход управляющего сигнала |
3 | Gnd | Земля |
4 | Din | Вход управляющего сигнала |
Главное преимущество данных светодиодов в том, что они могут соединяться в цепочку последовательно друг за другом, их можно соединять в ленты или собирать из них панели. При этом управление осуществляется всего по одному проводу. Это возможно благодаря тому, что каждый светодиод содержит в своём составе контроллер, который и управляет цветом и яркостью трёх каналов RGB. Из-за того, что управлять можно отдельно каждым светодиодом WS2812 в цепочке, такие светодиоды называются «адресные». На сегодняшний день это самые «продвинутые» светодиоды для организации больших массивов светодиодов.
Для примера на схеме показано последовательное подключение трёх светодиодов. На вход DIN первого светодиода подаётся управляющий сигнал. Светодиод обрабатывает его и передаёт далее со своего выхода DOUT на вход следующего в цепочке светодиода. И так сигнал проходит по всей цепочке светодиодов, каждый из которых считывает свою управляющую последовательность и изменяет свой цвет и интенсивность в соответствии с пришедшей командой.
Последовательное подключение светодиодов WS2812B
На фотографии представлена панель размером 10 на 10 светодиодов, с которой мы и будем экспериментировать. Как видно, на нижней части панели светодиоды соединены в единую цепочку.
Верхняя сторона панели светодиодов WS2812B | Нижняя сторона панели из светодиодов WS2812B |
Обратите внимание, что светодиодная панель весьма «прожорлива». На иллюстрации ниже это можно видеть по показаниям встроенного датчика тока источника питания: панель из ста светодиодов WS2812B потребляет ток более 3 амперов
Правда, почти все светодиоды в данном случае включены на максимальную яркость белым цветом (самый энергозатратный режим, т.к. для обеспечения белого свечения используются все три канала RGB на максимальной яркости).
Управление светодиодной панелью WS2812B
Приблизительное потребление вашего устройства можно оценть так. Один канал светодиода на максимальной яркости потребляет около 20 мА. В одном корпусе располагаются 3 светодиода. Следовательно, один RGB светодиод в максимуме потребляет до 60 мА тока. Умножаете это число на количество светодиодов в вашей матрице или ленте – это и будет максимально возможное потребление, и ваш источник питания должен иметь возможность выдать такой ток.
Адресная светодиодная лента Ардуино
Адресные ленты отличаются плотностью — от 30 до 144 светодиодов на метр, изготавливаются разном защитном исполнении: IP30, IP65, IP67, IP68. Все варианты исполнения, кроме IP30, могут применяться на улице в диапазоне температур от -25 до +80°C. Еще одна, более надежная лента — WS2813 отличается возможностью передавать сигналы дальше по цепочке даже через сгоревший чип.
Светодиодная лента WS2812B характеристики
- Размер светодиода — 5 х 5 мм
- Частота ШИМ — 400 Гц
- Скорость передачи данных — 800 кГц
- Размер данных — 24 бита на светодиод
- Напряжение питания — 5 Вольт
- Потребление при нулевой яркости — 1 мА на светодиод
- Потребление при максимальной яркости — 60 мА на светодиод
- Цветность: RGB, 256 оттенков на канал, 16 миллионов цветов
Характеристики WS2812B адресной светодиодной ленты
Адресная светодиодная лента ws2812b — это вершина эволюции лент. Каждый светодиод в ленте состоит из обычного RGB светодиода и контроллера с тремя транзисторными выходами. Благодаря этому есть возможность управлять цветом любого светодиода и создавать потрясающие цветовые и световые эффекты. Именно поэтому устройство пользуется популярностью, несмотря на высокую стоимость.
Как проверить адресную ленту без Ардуино
При подключении обращайте внимание на направление стрелок
Многих интересует, как включить адресную ленту без Ардуино и проверить ее на работоспособность. Если просто подключить питание к ленте, то ничего не произойдет — проверить ленту без контроллера нельзя. Если задеть цифровой вход адресной ленты, то могут загореться несколько светодиодов из-за случайных помех, которые воспринимаются контроллерами ws2812b светодиодов, как команды.
Если под рукой нет платы Ардуино, то можно использовать для проверки специальный контроллер. В крайнем случае, просто потрогать цифровой провод, чтобы понять будут гореть светодиоды на ленте или нет. Другого надежного способа проверить работу ws2812b ленты нет, поэтому рассмотрим далее управление и программирование адресной светодиодной ленты на микроконтроллере Ардуино Нано или Уно.
Немного теории
Если вы не имеете совершенно никакого представления о том, как работает светодиодная лента, стоит познакомиться с самим принципом ее работы. Ее основной элемент, дающий свет, – это полупроводниковый прибор, состоящий из двух кристаллов. В атомной структуре одного из них преобладают отрицательно заряженные ионы (электроны), а в другом – положительные (так называемые дырки). Если этот кристаллический «бутерброд» подключить к гальванической батарее, то при совпадении полюсов – плюс к элементу с «дырками», а минус к тому, где преобладают электроны – через него потечет ток. Он и вызовет свечение на стыке материалов.
Заметьте, что эффект свечения возникает только при совпадении плюсов и минусов. То есть, если вы подключите светодиод к источнику переменного тока, то он начнет моргать. Но и это еще не все. Кристаллы эти довольно малы – не более пяти миллиметров в диаметре. Если через них пропустить бытовой ток в 15 А, то они попросту сгорят. По этой причине светодиодные ленты подключают к особым источникам питания, понижающим напряжение и выпрямляющим его.
В источнике питания обязательно есть выпрямляющий диодный мост и RC-фильтр на входе, сглаживающий пульсации (нестабильность) питающего напряжения. От этого фильтра и зависит качество блока питания. В самых надежных и дорогих использованы стабилизаторы тока на микросхемах. В простых – те самые RC-фильтры.
Промышленностью выпускаются светодиодные ленты, питающиеся как от 24-х, так и от 12-ти вольт. Выходное напряжение блока питания должно соответствовать этому номиналу.
Электрическая схема БП светодиодных лент похожа на те, что используются для питания осветительных ламп того же типа.
Плюсы и минусы
В адресной светодиодной ленте Arduino яркость и режим работы каждого диода задаются отдельно.
У таких устройств масса достоинств.
- Их можно использовать для «умного» освещения. Не составит труда собрать динамическую подсветку, бегущую строку или сделать так, чтобы свет включался по расписанию. Подключите дополнительные модули, например, датчик движения, и когда вы зайдете в комнату, начнется светопреставление. А еще их работой можно управлять дистанционно с пульта и смартфона.
- Простота настройки. Вы можете самостоятельно написать программы для работы или воспользоваться готовыми шаблонами.
- Светодиодные полосы надежны и долговечны. Они не нагреваются и не требуют больших затрат на энергию.
- Доступность – еще один плюс. Диодные ленты широко распространены на рынке, выбрать нужную не составит труда. Самые бюджетные стоят 200 руб. за метр, более яркие – от 500 руб.
Но есть и недостатки.
- Нужен отдельный источник питания на 5 или 12 В. Блок Arduino может дать только 800 мА тока, которого хватит только на 13 пикселей (один пиксель потребляет 40-60 мА).
- Соединения требовательны к качеству пайки.
Если вы умеете хорошо паять, то собрать схему не составит труда. А если не умеете, то самое время научиться. Так что смело приступайте к выбору светотехники.
Светодиодные ленты
Светодиодная лента представляет собой цепь соединённых светодиодов. Соединены они не просто так, например обычная 12V лента состоит из сегментов по 3 светодиода в каждом. Сегменты соединены между собой параллельно, то есть на каждый приходят общие 12 Вольт. Внутри сегмента светодиоды соединены последовательно, а ток на них ограничивается общим резистором (могут стоять два для более эффективного теплоотвода):
Таким образом достаточно просто подать 12V от источника напряжения на ленту и она будет светиться. За простоту и удобство приходится платить эффективностью. Простая математика: три белых светодиода, каждому нужно по ~3.2V, суммарно это 9.6V. Подключаем ленту к 12V и понимаем, что 2.5V у нас просто уходят в тепло на резисторах. И это в лучшем случае, если резистор подобран так, чтобы светодиод горел на полную яркость.
Подключаем к Arduino
Здесь всё очень просто: смотрите предыдущий урок по управлению нагрузкой постоянного тока. Управлять можно через реле, транзистор или твердотельное реле. Нас больше всего интересует плавное управление яркостью, поэтому продублирую схему с полевым транзистором:
Конечно же, можно воспользоваться китайским мосфет-модулем! Пин VCC кстати можно не подключать, он никуда не подведён на плате.
Управление
Подключенная через транзистор лента управляется точно так же, как светодиод в предыдущей главе, то есть все примеры кода с миганием, плавным миганием и управление потенциометром подходят к этой схеме.
Про RGB и адресные светодиодные ленты мы поговорим в отдельных уроках.
Питание и мощность
Светодиодная лента потребляет немаленький ток, поэтому нужно убедиться в том, что выбранный блок питания, модуль или аккумулятор справится с задачей. Но сначала обязательно прочитайте урок по закону Ома! Потребляемая мощность светодиодной ленты зависит от нескольких факторов:
- Яркость. Максимальная мощность будет потребляться на максимальной яркости.
- Напряжение питания (чаще всего 12V). Также бывают 5, 24 и 220V ленты.
- Качество, тип и цвет светодиодов: одинаковые на вид светодиоды могут потреблять разный ток и светить с разной яркостью.
- Длина ленты. Чем длиннее лента, тем больший ток она будет потреблять.
- Плотность ленты, измеряется в количестве светодиодов на метр. Бывает от 30 до 120 штук, чем плотнее – тем больший ток будет потреблять при той же длине и ярче светить.
Лента всегда имеет характеристику мощности на погонный метр (Ватт/м), указывается именно максимальная мощность ленты при питании от номинального напряжения. Китайские ленты в основном имеют чуть меньшую фактическую мощность (в районе 80%, бывает лучше, бывает хуже). Блок питания нужно подбирать так, чтобы его мощность была больше мощности ленты, т.е. с запасом как минимум на 20%.
- Пример 1: нужно подключить 4 метра ленты с мощностью 14 Ватт на метр, лента может работать на максимальной яркости. 14*4 == 56W, с запасом 20% это будет 56*1.2 ~ 70W, ближайший блок питания в продаже будет скорее всего на 100W.
- Пример 2: берём ту же ленту, но точно знаем, что яркость во время работы не будет больше половины. Тогда можно взять блок на 70 / 2 == 35W.
Важные моменты по току и подключению:
- Подключение: допустим, у нас подключено ленты на 100W. При 12 Вольтах это будет 8 Ампер – весьма немаленький ток! Ленту нужно располагать как можно ближе к блоку питания и подключать толстыми (2.5 кв. мм и толще) проводами. Также при создании освещения есть смысл перейти на 24V ленты, потому что ток в цепи будет меньше и можно взять более тонкие провода: если бы лента из прошлого примера была 24-Вольтовой, ток был бы около 4 Ампер, что уже не так “горячо”.
- Дублирование питания: лента сама по себе является гибкой печатной платой, то есть ток идёт по тонкому слою меди. При подключении большой длины ленты ток будет теряться на сопротивлении самой ленты, и чем дальше от точки подключения – тем слабее она будет светить. Если требуется максимальная яркость на большой длине, нужно дублировать питание от блока питания дополнительными проводами, или ставить дополнительные блоки питания вдоль ленты. Дублировать питание рекомендуется каждые 2 метра, потому что на такой длине просадка яркости становится заметной уже почти на всех лентах.
- Охлаждение: светодиоды имеют не 100% КПД, плюс ток в них ограничивается резистором, и как результат – лента неслабо греется. Рекомендуется приклеивать яркую и мощную ленту на теплоотвод (алюминиевый профиль). Так она не будет отклеиваться и вообще проживёт гораздо дольше.
Шаг 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, вы можете использовать любую кнопку или датчик для запуска светодиодов при входе в комнату, например:
Теперь, когда мы рассмотрели схему с обычной светодиодной лентой, перейдем к адресным светодиодным лентам 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 для начинающих.
Светодиодная лента Ардуино – написание кода.
Подключите плату 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 секунд, а затем равномерно исчезает до нуля:
Если у вас возникли трудности, дважды проверьте свою проводку и код.